次の方法で共有


制御テーブルを使用してデータベースから一括コピーを行う

適用対象: Azure Data Factory Azure Synapse Analytics

ヒント

Data Factory in Microsoft Fabric は、よりシンプルなアーキテクチャ、組み込みの AI、および新機能を備えた次世代のAzure Data Factoryです。 データ統合を初めて使用する場合は、Fabric Data Factory から始めます。 既存の ADF ワークロードをFabricにアップグレードして、データ サイエンス、リアルタイム分析、レポートの新機能にアクセスできます。

Oracle Server、Netezza、Teradata、またはSQL Serverのデータ ウェアハウスからデータをAzure Synapse Analyticsにコピーするには、複数のテーブルから大量のデータを読み込む必要があります。 通常は、複数のスレッドを並列して使用して単一のテーブルから行が読み込まれるように、各テーブルでデータをパーティション化する必要があります。 この記事では、これらのシナリオで使用するテンプレートについて説明します。

注意

データ ボリュームが比較的小さい少数のテーブルからAzure Synapse Analyticsにデータをコピーする場合は、Azure Data Factoryデータのコピー ツールを使用する方が効率的です。 この記事で説明するテンプレートは、そのシナリオで必要とするものより大きくなっています。

このソリューション テンプレートについて

このテンプレートでは、外部制御テーブルからコピーするソース データベース パーティションの一覧が取得されます。 次に、ソース データベース内の各パーティションが反復処理され、宛先にデータがコピーされます。

このテンプレートには、3 つのアクティビティが含まれています。

  • ルックアップでは、外部制御テーブルからデータベース パーティションの一覧が確実に取得されます。
  • ForEach は、Lookup アクティビティからパーティション 一覧を取得し、各パーティションをCopy アクティビティに反復処理します。
  • コピー では各パーティションがソース データベース ストアから宛先ストアにコピーされます。

このテンプレートでは、次のパラメーターを定義します。

  • Control_Table_Name は外部制御テーブルであり、ソース データベースのパーティション一覧が格納されています。
  • Control_Table_Schema_PartitionID は、各パーティション ID を格納する外部制御テーブル内の列名です。 ソース データベース内の各パーティションのパーティション ID が一意であることを確認してください。
  • Control_Table_Schema_SourceTableName は、ソース データベースからのそれぞれのテーブル名を格納する外部制御テーブルです。
  • Control_Table_Schema_FilterQuery は、ソース データベース内の各パーティションからデータを取得するためのフィルター クエリを格納する外部制御テーブル内の列名です。 たとえば、ご利用のデータが年単位でパーティション化されている場合、各行に格納されるクエリは、'select * from datasource where LastModifytime >= ''2015-01-01 00:00:00'' and LastModifytime <= ''2015-12-31 23:59:59.999''' のようになります。
  • Data_Destination_Folder_Path は、データがコピー先ストアにコピーされるパスです (選択した宛先が "ファイル システム" または "Azure Data Lake Storage Gen1" の場合に適用されます)。
  • Data_Destination_Container は、データが宛先ストアにコピーされる先のルート フォルダーのパスです。
  • Data_Destination_Directory は、データが宛先ストアにコピーされる先のルート以下のディレクトリ パスです。

宛先ストアのパスを定義する最後の 3 つのパラメーターは、選択した宛先がファイルベースのストレージである場合にのみ表示されます。 宛先ストアとして "Azure Synapse Analytics" を選択した場合、これらのパラメーターは必要ありません。 ただし、Azure Synapse Analyticsのテーブル名とスキーマは、ソース データベースの名前と同じである必要があります。

このソリューション テンプレートの使用方法

  1. SQL ServerまたはAzure SQL Databaseに制御テーブルを作成して、一括コピー用のソース データベース パーティションの一覧を格納します。 次の例では、ソース データベース内に 5 つのパーティションがあります。 3 つのパーティションは datasource_table 用で、2 つのテーブルは project_table 用です。 ソース データベースからのテーブル datasource_table 内のデータをパーティション分割するには、列 LastModifytime が使用されます。 最初のパーティションを読み取るために使われるクエリは 'select * from datasource_table where LastModifytime >= ''2015-01-01 00:00:00'' and LastModifytime <= ''2015-12-31 23:59:59.999''' です。 同様のクエリを使用して、他のパーティションからもデータを読み取ることができます。

     		Create table ControlTableForTemplate
     		(
     		PartitionID int,
     		SourceTableName  varchar(255),
     		FilterQuery varchar(255)
     		);
    
     		INSERT INTO ControlTableForTemplate
     		(PartitionID, SourceTableName, FilterQuery)
     		VALUES
     		(1, 'datasource_table','select * from datasource_table where LastModifytime >= ''2015-01-01 00:00:00'' and LastModifytime <= ''2015-12-31 23:59:59.999'''),
     		(2, 'datasource_table','select * from datasource_table where LastModifytime >= ''2016-01-01 00:00:00'' and LastModifytime <= ''2016-12-31 23:59:59.999'''),
     		(3, 'datasource_table','select * from datasource_table where LastModifytime >= ''2017-01-01 00:00:00'' and LastModifytime <= ''2017-12-31 23:59:59.999'''),
     		(4, 'project_table','select * from project_table where ID >= 0 and ID < 1000'),
     		(5, 'project_table','select * from project_table where ID >= 1000 and ID < 2000');
    
  2. [データベースからの一括コピー] テンプレートに移動します。 手順 1 で作成した外部制御テーブルへの新しい接続を作成します。

    コントロール テーブルへの新しい接続の作成を示すスクリーンショット。

  3. データのコピー元であるソース データベースへの新しい接続を作成します。

    ソース データベースへの新しい接続の作成を示すスクリーンショット。

  4. データのコピー先である宛先データ ストアへの新しい接続を作成します。

    同期先ストアへの新しい接続の作成を示すスクリーンショット。

  5. [このテンプレートを使用] を選択します。

  6. 次の例に示すように、パイプラインが表示されます。

    パイプラインを示すスクリーンショット。

  7. [デバッグ] を選択し、 [パラメーター] で入力し、 [完了] を選択します。

    [デバッグ] ボタンが表示されたスクリーンショット。

  8. 次の例のような結果が表示されます。

    パイプラインの実行結果を示すスクリーンショット。

  9. (省略可能)データ変換先として [Azure Synapse Analytics] を選択した場合は、Azure Synapse Analytics Polybaseの要件として、ステージング用にAzure Blob Storageへの接続を入力する必要があります。 テンプレートを使うと、Blob ストレージのコンテナー パスが自動的に生成されます。 パイプラインの実行後は、コンテナーが作成されているかどうかを確認します。

    Polybase 設定が表示されたスクリーンショット。