SQL 実行タスクの使用
データソースへの接続の確立 後、CData Spark SQL Task を使用して、制御フローレベルでストアドプロシージャとSQL クエリを実行できます。
Spark SQL Task でSpark SQL データをクエリ
Spark SQL に接続してカスタムSQL クエリを制御フローレベルで実行するには、次の手順を実行してください。一般的な使用例は、ワークフローを実行する前にテーブルデータを切り捨てるか、ストアドプロシージャを実行する方法です。- SSIS ツールボックスで、 CDataSpark SQL Task を制御フローにドラッグします。
- CDataSpark SQL Task をダブルクリックします。CData Spark SQL Task が開きます。
- Connection Manager -> SQL Statement -> Connection ドロップダウンリストで、有効なCData Spark SQL 接続マネージャーを選択するか、まだない場合は新しい接続マネージャーを作成します。
- 実行するクエリを設定します。これを制御する3つのプロパティがあります。
- SQLSourceType: クエリをどこから取得するか。CData Spark SQL Task UI に直接入力するか、またはパッケージ内の変数から取得するかのいずれかです。
- CommandType: 実行するコマンドのタイプ。オプションは"Table Or View"、"Stored Procedure"、または"Command Text" です。最初の2つでは、Task は実行するオブジェクトの名前のみ想定しています。Command Text オプションを使うと、好きなSQL コマンドを実行できます。
- 最後のオプションは、上の2つの設定に設定した値に基づくコンテキスト固有のものです。
- SQLSourceType がDirect Input に設定されている場合、各Command Type ごとに異なる設定が表示されます。
- Table or View:Command Type がTable or View に設定されている場合に表示されます。ドロップダウンメニューで、データを取得するテーブルまたはビューを選択します。
- Stored Procedure:Command Type がStored Procedure に設定されている場合に表示されます。ドロップダウンメニューで、実行したいストアドプロシージャを選択します。利用可能なインプットはParameter Mapping タブに自動的に一覧表示されます。ストアド プロシージャのインプットの値をここで指定します。
- SQLStatement:Command Type がCommand Text に設定されている場合に表示されます。実行したいSQL クエリを入力します。
- SQLSourceType がVariable に設定されている場合、最終的な設定は常にSourceVariable になりますが、動作はCommand Type によって異なります。
- Command Type がTable or View に設定されている場合、データを取得したいテーブルまたはビューの名前を含む変数を選択します。
- Command Type がStored Procedure に設定されている場合、実行するストアドプロシージャの名前を含む変数を選択します。Parameter Mapping タブでインプットを手動で追加する必要があります。追加するインプットのParameter Name 値が、ストアドプロシージャで使用可能なインプットのParameter Name 値と一致していることを確認します。
- Command Type がCommand Text に設定されている場合、実行したいSQL クエリ全体を含む変数を選択します。
- SQLSourceType がDirect Input に設定されている場合、各Command Type ごとに異なる設定が表示されます。
- 次のセクションで説明するように、必要に応じて、パラメータや結果セットを割当てることができます。
サポートされているSQL 構文および例については、SELECT ステートメント を参照してください。
パラメータマッピングの定義
パラメータは、Stored Procedure とCommand Text コマンドタイプで使用できます。Parameter Mapping タブで、必要な数のパラメータを追加します。"Stored Procedure" オプションを使用するときは、"Parameter Name" はストアドプロシージャで定義されたパラメータ名と完全に一致する必要があります。"Command Text" オプションでは、名前はSQL コマンドで使用されている名前と一致する必要があります。選択したDirection に応じて、変数を読み取りまたは書き込みのいずれかに割り当てることができます。利用可能なDirection オプションは以下のとおりです。- Input: 呼び出しを実行するときにSSIS 変数から値が読み出されることを示します。
- Output: 値がコマンド呼び出しから返され、パッケージ内で後で使用するためにローカル変数に格納されることを示します。
- InOut: 上記の組み合わせ。クエリが実行されると値が読み出され、実行が完了すると戻り値が既存の値を上書きします。
結果セットの設定
パッケージで後にクエリ結果が必要な場合は、結果セットを設定できます。オプションは2つあります。Single Row とFull ResultSet です。それぞれ、タスクによる値の出力方法とUI の[結果セット]タブでの出力の定義方法に影響します。ストアドプロシージャを使用する場合、結果セットを設定する代わりに、OUT またはIN/OUT パラメータを定義することができます。- Single Row: 単一行が返されたら、ResultSet Name をクエリするカラムのインデックス(例、0、1、2、など)に設定する必要があります。Variable Name は、出力カラムとして正しいデータ型であるSSIS の変数にマップする必要があります。
- Full ResultSet: Full ResultSet オプションでは、クエリから返された完全なデータを含むDataTable である単一の値のみが返されます。ResultSet Name は0 に設定する必要があります。SSIS Variable Name は、"Object" 型の変数に設定する必要があります。クエリから複数のResultSets が返される場合、Task は現在、最初の出力のみをサポートしていることに注意してください。