マッピングでのMicrosoft Azure Synapse SQLルックアップ
指定されたルックアップ条件に基づいてデータを取得するには、ルックアップトランスフォーメーションを使用します。
Microsoft Azure Synapse SQLルックアップトランスフォーメーションを使用して、Microsoft Azure Synapse SQLオブジェクトのデータをルックアップします。例えば、顧客コードが格納されているソーステーブルに対して、ターゲットテーブルに顧客名が含まれるようにすると、要約データが読みやすくなります。
Microsoft Azure Synapse SQLルックアップトランスフォーメーションを使用して、別のMicrosoft Azure Synapse SQLオブジェクトの顧客名をルックアップできます。
Microsoft Azure Synapse SQLマッピングのキャッシュされたルックアップトランスフォーメーションで、戻りフィールドのデフォルトのカラム値を設定することもできます。ただし、詳細モードでは、戻りフィールドのデフォルトのカラム値を設定することはできません。
マッピングタスクのフィールドマッピングを設定するときに、次のルックアップを作成できます。
- •キャッシュされた状態またはキャッシュされていない状態での接続
- •未接続のルックアップ
- •動的ルックアップキャッシュを使用した接続ルックアップ
詳細モードのマッピングに、接続済みまたは未接続のキャッシュされていないルックアップを設定することはできません。
以下の表に、ルックアップトランスフォーメーションで設定できるMicrosoft Azure Synapse SQLルックアップオブジェクトのプロパティを示します。
プロパティ | 説明 |
|---|
接続 | ルックアップ接続の名前。 既存の接続を選択するか、新規接続を作成します。または、ルックアップ接続プロパティのパラメータ値を定義することもできます。 実行時にパラメータを上書きする場合は、パラメータの作成時に[実行時にパラメータのオーバーライドを許可する]オプションを選択します。タスクを実行すると、エージェントはタスク詳細セッションプロパティで指定されたファイルからパラメータを使用します。 パラメータ化されていないMicrosoft Azure Synapse SQL接続とパラメータ化されたMicrosoft Azure Synapse SQL接続を切り替えることができます。接続を切り替えても、詳細プロパティ値は保持されます。 |
ソースタイプ | ソースオブジェクトのタイプ。 [単一オブジェクト]、[クエリ]、または[パラメータ]を選択します。 カスタムクエリをキャッシュおよび動的キャッシュルックアップのソースタイプとして使用することはできません。 |
ルックアップオブジェクト | マッピングのルックアップオブジェクトに名前を付けます。 |
パラメータ | タスクを編集せずに更新する値を定義するパラメータファイル。 ルックアップオブジェクトに既存のパラメータを選択するか、[新しいパラメータ]をクリックしてルックアップオブジェクトに新しいパラメータを定義します。 パラメータをソースタイプとして選択する場合にのみ、[パラメータ]プロパティが表示されます。 実行時にパラメータを上書きする場合は、パラメータの作成時に[実行時にパラメータのオーバーライドを許可する]オプションを選択します。タスクを実行すると、エージェントはタスク詳細セッションプロパティで指定されたファイルからパラメータを使用します。 |
クエリの定義 | ソースタイプがクエリの場合、[カスタムクエリの編集]ダイアログボックスを表示します。有効なカスタムクエリを入力して、[OK]をクリックします。 |
複数一致 | ルックアップ条件によって複数の一致が返された場合の動作。 次のいずれかのオプションを選択します。 - - 最初の行を返す1
- - 最後の行を返す1
- - 任意の行を返す
- - すべての行を返す
- - エラーを報告
注: ルックアップテーブルにIDENTITYカラムがある場合、IDENTITYカラムのソートに基づいて最初と最後の行のデータが返されます。一致する行に重複がある場合、返される値はランダムになります。 |
1詳細モードのマッピングには適用されません。 |
Binary、Varbinary、Datetimeoffsetの各データ型カラムをルックアップ条件として使用することはできません。
Microsoft Azure Synapse SQL接続でキャッシュルックアップを使用し、ルックアップ条件にNULL値が含まれる場合、ルックアップ条件は無視されます。
以下の表に、ルックアップトランスフォーメーションで設定できるMicrosoft Azure Synapse SQLルックアップ詳細プロパティを示します。
プロパティ | 説明 |
|---|
Azure Blobコンテナ名 | 接続プロパティでAzure Blobストレージを選択した場合は必須です。 Microsoft Azure Blob Storageのコンテナの名前。 コンテナ名に特殊文字を含めないでください。 |
ADLSファイルシステム名 | 接続プロパティでADLS Gen2ストレージを選択した場合は必須です。 Microsoft Azure Data Lake Storage Gen2のファイルシステムの名前。 ファイルシステム名に特殊文字を含めないでください。 ファイルシステムの下のディレクトリのパスを指定することもできます。ディレクトリパスの指定には、スラッシュのみを使用します。 |
スキーマ名のオーバーライド | 接続で指定されたスキーマをオーバーライドします。 |
テーブル名のオーバーライド | インポートされたMicrosoft Azure Synapse SQLソーステーブルのテーブル名をオーバーライドします。 |
フィールド区切り文字 | ファイル内のフィールドを区切るために使用する文字。デフォルト値は0x1eです。「TAB」または0-256の単一文字の印刷可能文字と、印刷できないASCII文字を指定できます。印刷できない文字は、16進数で指定する必要があります。 注: 複数文字のASCII文字は、TABを除いて適用できません。次の印刷できない文字は使用できません。 00x0、0x0、0x0A、0x1B、0x0D、および0x1F |
Blob Storeへの同時接続数1 | Microsoft Azure Blob Storageからデータを抽出するための同時接続数。サイズの大きいBlobを読み取る場合は、データを処理するために複数のスレッドを生成できます。[BLOBパートサイズ]を設定して、サイズの大きいBlobを小さいパートにパーティション化します。 デフォルト値は4です。最大値は10です。 |
Blobパートサイズ1 | 指定したサイズの小さいパートにBlobをパーティション化します。サイズの大きいBlobを読み取る場合は、Blobを小さいパートにパーティション化し、同時接続を設定して、データを並列処理するために必要なスレッド数を生成することを検討します。 デフォルトは8 MBです。 |
Pre-SQL | ソースからデータを読み取る前に実行する必要があるPre-SQLコマンド。 |
Post-SQL | ソースからデータを読み取った後に実行する必要があるPost-SQLコマンド。 |
SQLオーバーライド | Microsoft Azure Synapse SQLオブジェクトからデータを読み取る場合は、SQLオーバーライドを設定し、制約を定義できます。 |
実行前/実行後SQLのエラー | pre-SQLコマンドまたはpost-SQLコマンドを含むタスクでエラーが発生した場合の動作を決定します。以下のいずれかのオプションを選択できます。 - - 続行。エラーに関係なくタスクが続行されます。
- - 停止。pre-SQLコマンドまたはpost-SQLコマンドの実行中にエラーが発生すると、タスクは停止します。
|
文字列の引用符 | Secure Agentは、Microsoft Azure Synapse SQLからデータを読み取るときに、指定された文字をスキップします。 デフォルト値は0x1fです。 |
中間ディレクトリ1 | オプション。Secure Agentマシンのステージングディレクトリへのパス。 Microsoft Azure Synapse SQLからデータを読み取るときに、ファイルをステージングするステージングディレクトリを指定します。ディレクトリに十分なスペースがあり、ディレクトリへの書き込み権限があることを確認します。 デフォルトのステージングディレクトリは/tmpです。 Hosted Agentを使用する場合、Interimディレクトリを指定することはできません。 |
トレースレベル1 | ログファイルに表示される詳細情報の量を設定します。[簡易]、[通常]、[詳細 - 初期化]、[詳細 - データ]から選択できます。デフォルトは[通常]です。 |
ルックアップデータフィルタ1 | マッピングがルックアップソーステーブルのキャッシュに対して実行するルックアップの回数を、フィルタ条件で指定した値に基づいて制限します。 このプロパティは、ソースタイプとしてオブジェクトを選択し、ルックアップトランスフォーメーションの[詳細]タブでルックアップキャッシュを有効にした場合に適用されます。 最大長は32768文字です。 このプロパティの詳細については、データ統合のドキュメントにある「トランスフォーメーション」を参照してください。 |
1詳細モードのマッピングには適用されません。 |
ルックアップキャッシングの有効化
マッピングでルックアップトランスフォーメーションを設定すると、ランタイムセッション中にルックアップデータをキャッシュできます。
ルックアップキャッシュの有効化を選択にすると、データ統合はルックアップソースを一度クエリし、セッション中に使用する値をキャッシュします。これにより、パフォーマンスを向上できます。キャッシュされたルックアップを保存するディレクトリを指定できます。
- ルックアップキャッシュの永続性
- ルックアップキャッシュの永続性を使用して、ルックアップキャッシュファイルを次回再利用するために保存します。データ統合は、キャッシュを使用するように設定されているルックアップトランスフォーメーションを処理します。
- 永続的なルックアップキャッシュファイルに使用するファイル名のプレフィックスをファイル名プレフィックスのキャッシュフィールドで指定できます。
- ルックアップテーブルが変更されることがある場合は、ルックアップソースからの再キャッシュプロパティを有効にしてルックアップキャッシュを再作成します。
- 動的ルックアップキャッシュ
- 動的ルックアップキャッシュを使用してルックアップキャッシュがターゲットに同期し続けるようにします。デフォルトでは、動的ルックアップキャッシュは無効で、キャッシュは静的になっています。
- キャッシュが静的である場合、ルックアップキャッシュ内のデータは、マッピングタスクの実行時に変更されません。
- タスクがキャッシュを複数回使用する場合、タスクは同じデータを使用します。キャッシュが動的である場合、タスクはタスク内のアクションに基づいてキャッシュを更新します。そのため、タスクがルックアップを複数回使用する場合、ダウンストリームトランスフォーメーションでは更新されたデータが使用されます。
- ルックアップキャッシュの事前作成
- ルックアップキャッシュの事前作成を使用して、ルックアップトランスフォーメーションがデータを受信する前にルックアップキャッシュを作成します。同時に複数のルックアップキャッシュファイルを作成してパフォーマンスを向上できます。
ルックアップキャッシュの詳細については、データ統合のドキュメントにある「トランスフォーメーション」を参照してください。
マッピングのステージングパフォーマンスの最適化
データ統合は、Microsoft Azure Synapse SQLからの読み込み後またはMicrosoft Azure Synapse SQLへの書き込み前に、デフォルトで、データをステージングするため、ローカルの一時フォルダにフラットファイルを作成します。ステージングのパフォーマンスを最適化するようにデータ統合を設定できます。
ステージングプロパティを設定しない場合、データ統合は最適化された設定なしでステージングを実行しますが、これがタスクのパフォーマンスに影響する場合があります。
ステージングプロパティを有効にする場合は、次のルールを考慮してください。
- •複数のオブジェクトを読み取る場合、ステージングパフォーマンスを最適化することはできません。
- •SQL ELTの最適化が有効になっているマッピングを実行すると、マッピングはSQL ELTの最適化を使用せずに実行されます。
- •データにタイムゾーン付きのTimestampデータ型が含まれている場合、ローカルフラットファイルでデータをステージングせずにジョブが実行されます。
- •詳細モードのマッピングを設定すると、ローカルフラットファイルのデータをステージングせずにマッピングが実行されます。
- •カスタムクエリまたはSQLオーバーライドをOrder By句とともに使用し、AzureSynapseDisableStagingForSortプロパティをtrueに設定すると、ローカルフラットファイルのデータをステージングせずにマッピングが実行されます。
- •小数値を含むソースデータを読み取ってMicrosoft Azure Synapse SQLターゲットに書き込む場合、ステージングパフォーマンスを最適化するようにステージングプロパティを有効にすると、ターゲットの小数値が切り詰められ、最も近い整数に丸められます。
この問題を回避するには、[システム構成の詳細]セクションの[タイプ]でデータ統合サービスとして[DTM]を選択し、[DisableInfaDoubleHandlingForStaging]の値を[はい]に設定します。
- •永続キャッシュを使用するように設定されたルックアップに対するステージング最適化プロパティを有効にして、キャッシュファイル名のプレフィックスを定義すると、連続実行時にマッピングが失敗する。
- •Parquetをステージングファイル形式として使用している場合、ステージングプロパティを使用してステージングパフォーマンスを最適化することはできず、マッピングは検証エラーで失敗します。
Microsoft Azure Synapse SQLコネクタでのステージングパフォーマンスの最適化
Microsoft Azure Synapse SQLコネクタによるステージングパフォーマンスの最適化を実現するには、次のタスクを実行します。
- 1Administratorで、[ランタイム環境]をクリックします。
- 2このプロパティを設定するSecure Agentを編集します。
- 3[システム構成の詳細]セクションで、[データ統合サーバー]に[サービス]を選択し、タイプに[Tomcat]を選択します。
- 4Tomcatプロパティの値をMicrosoft Azure Synapse SQLコネクタのプラグインIDに設定します。
プラグインIDは、次のディレクトリにあるマニフェストファイルにあります: <Secure Agentのインストールディレクトリ>/downloads/<Microsoft Azure Synapse SQLパッケージ>/CCIManifest
次の図に、読み取り、書き込み、およびルックアップ操作用のSecure Agentのプロパティセットを示します。
複数のコネクタのプロパティを設定するには、各コネクタのプラグインIDをカンマで区切って指定します。
マッピングを実行すると、マシンの次のディレクトリにフラットファイルが作成されます: C:\Windows\Temp\AzureSynapse\stage\<AzureSynapse_Target.txt>
セッションログを確認します。フラットファイルが正常に作成されると、データ統合は次のメッセージをセッションログに記録します。
INFA_DTM_STAGINGが、フラットファイルを使用してローカルステージングファイルを作成するように正常に設定されました。