Azure Data Factory を使用してデータを移動する

完了

Azure Data Factory は、完全にサーバーレスな方法で、シンクおよびストアにわたってデータの抽出、変換、読み込みを行うネイティブ サービスです。 つまり、データ統合の観点からは、各データ パラダイム間でデータを合理的に変換できる限り、それぞれのデータストアの微妙な違いに関係なく、データストア間でデータをマーシャリングできます。

セットアップ

Azure Cosmos DB for NoSQL は、Azure Data Factory 内のリンク サービスとして使用できます。 この種類のリンク サービスは、データ取り込みのソースとして、およびデータ出力のターゲット (シンク) としてサポートされています。 どちらの場合も、構成は同じです。 Cosmos DB アカウントでマネージド ID とロールベースのアクセス制御 (RBAC) アクセス許可を有効にしていることを確認します。 サービスを構成するには、Azure portal を使用するか、JSON オブジェクトを使用します。

{
    "name": "<example-name-of-linked-service>",
    "properties": {
        "type": "CosmosDb",
        "typeProperties": {
            "accountEndpoint": "https://<cosmos-account-name>.documents.azure.com:443/",
            "authenticationType": "ManagedIdentity"
        }
    }
}

Azure Cosmos DB から読み込む

Azure Data Factory で Azure Cosmos DB for NoSQL からデータを読み込む場合は、リンク サービスをソースとして構成する必要があります。 この設定により、データの読み取りを行います。 このオプションを構成するには、読み取るデータの SQL クエリを作成する必要があります。 たとえば、変換して最終的に宛先データ ストアに読み込むために、Azure Cosmos DB for NoSQL から Azure Data Factory に読み取る項目をコンテナーからフィルター処理するクエリ (SELECT id, categoryId, price, quantity, name FROM products WHERE price > 500 など) を記述します。

Azure Data Factory で、ソース アクティビティには、クエリなどのプロパティを設定するために使用できる構成 JSON オブジェクトが含まれています。

{
    "source": {
        "type": "CosmosDbSqlApiSource",
        "query": "SELECT id, categoryId, price, quantity, name FROM products WHERE price > 500",
        "preferredRegions": [
            "East US",
            "West US"
        ]        
    }
}

Azure Cosmos DB に書き込む

Azure Data Factory で Azure Cosmos DB for NoSQL にデータを格納する場合は、リンク サービスをシンクとして構成する必要があります。 この設定により、データの読み込みを行います。 このオプションを構成するには、書き込み動作を設定する必要があります。 たとえば、データを挿入する場合や、データをアップサートして、一致する一意識別子 (id フィールド) を持つ可能性がある項目を上書きする場合があります。

シンク アクティビティには、構成 JSON オブジェクトも含まれていました。

"sink": {
    "type": "CosmosDbSqlApiSink",
    "writeBehavior": "upsert"
}