現在、SparkのコードをMSSQL Analytical Services with Pythonに移植しています。すべてが素晴らしく、素敵ですが、私のソリューションがスクリプトの複数の入力に対して正しいのかどうかはわかりません。私はsuper_package
と呼ばれるカスタムパッケージとsample_model
というサンプルモデルを持っているMSSQL Serverの複数入力ソース2017 Python分析サービス
DROP PROCEDURE IF EXISTS SampleModel;
GO
CREATE PROCEDURE SampleModel
AS
BEGIN
exec sp_execute_external_script
@language =N'Python',
@script=N'
import sys
sys.path.append("C:\path\to\custom\package")
from super_package.sample_model import run_model
OutputDataSet = run_model()'
WITH RESULT SETS ((Score float));
END
GO
INSERT INTO [dbo].[SampleModelPredictions] (prediction) EXEC [dbo].[SampleModel]
GO
:
は、次のコードスニペットを考えてみましょう。このモデルは、入力として、複数のデータベーステーブルを使用し、以来、私はむしろ、一つの場所にあるすべてのものを持っているでしょう、私は、データベースに接続し、直接データをフェッチモジュールを持っている:run_model()
関数の内部
def go_go_get_data(query, config):
return rx_data_step(RxSqlServerData(
sql_query=query,
connection_string=config.connection_string,
user=config.user,
password=config.password))
私は必要なすべてのデータをフェッチgo_go_get_data
機能を持つデータベースから取得します。
データが大きすぎて1回の処理で処理できない場合は、ページ設定を行います。 一般的に私はテーブルに加わることができないので、この解決法は機能しません。 質問は:これはこの問題に取り組むための正しいアプローチですか?それとも私は何かが恋しい?今のところこれはうまくいきますが、私がまだ開発/試行段階にある中で、私はこれが拡大するとは確信できません。私はむしろ、ストアドプロシージャのパラメータをPythonコンテキストの内部で取得するよりも使いたいと思います。
こんにちは@muma! 「一般的にはテーブルに参加できないので、この解決策は動作しません」と言うときは、Python内のテーブルに参加できない、あるいは 'sp_execute_external_scriptの' @ input_data_1'パラメータを設定できないということですか? '結合を含むクエリには? –
両方、Pythonスクリプト内でも '@ input_data_1'パラメータ内にもありません。 – muma