Azure Data Factory を使用して既存のデータを移行する
Azure Data Factory では、Azure Cosmos DB がデータ取り込みのソースとして、またデータ出力のターゲット (シンク) としてサポートされています。
このラボでは、便利なコマンドライン ユーティリティを使用して Azure Cosmos DB を設定し、Azure Data Factory を使用してデータのサブセットをコンテナー間で移動します。
Azure Cosmos DB for NoSQL アカウントを作成してシードする
コマンドライン ユーティリティを使用して、4,000 RU/s (秒あたりの要求ユニット数) の cosmicworks データベースと products コンテナーを作成します。 作成後、スループットを調整して 400 RU/s に下げます。
products コンテナーを加えるために、このラボの最後に ETL 変換と読み込み操作のターゲットとなる flatproducts コンテナーを手動で作成します。
-
新しい Web ブラウザー ウィンドウまたはタブで、Azure portal (
portal.azure.com
) に移動します。 -
ご利用のサブスクリプションに関連付けられている Microsoft 資格情報を使用して、ポータルにサインインします。
-
[+ リソースの作成] を選択し、Cosmos DB を検索して、新しい Azure Cosmos DB for NoSQL アカウント リソースを作成します。以下を設定して、残りの設定はすべて既定値のままにします。
設定 Value サブスクリプション ’‘既存の Azure サブスクリプション’’ リソース グループ ’‘既存のリソース グループを選択するか、新しいものを作成します’’ アカウント名 ’‘グローバルに一意の名前を入力します’’ 場所 ’‘使用可能なリージョンを選びます’’ 容量モード プロビジョニング済みスループット Apply Free Tier Discount (Free レベル割引の適用) 適用しない このアカウントでプロビジョニングできるスループットの総量を制限する Unchecked 📝 ご利用のラボ環境には、新しいリソース グループを作成できない制限が存在する場合があります。 その場合は、事前に作成されている既存のリソース グループを使用します。
-
デプロイ タスクが完了するまで待ってから、このタスクを続行してください。
-
新しく作成された Azure Cosmos DB アカウント リソースに移動し、 [キー] ペインに移動します。
-
このペインには、SDK からアカウントに接続するために必要な接続の詳細と資格情報が含まれています。 具体的な内容は次のとおりです。
-
[URI] フィールドに注目します。 このエンドポイントの値は、この演習で後ほど使用します。
-
[主キー] フィールドに注目してください。 このキーの値は、この演習で後ほど使用します。
-
-
後で戻るので、ブラウザーのタブは開いたままにしておきます。
-
Visual Studio Code を起動します。
📝 Visual Studio Code インターフェイスについてまだよく理解していない場合は、Visual Studio Code の入門ガイドを参照してください
-
Visual Studio Code で、 [ターミナル] メニューを開き、 [新しいターミナル] を選択して新しいターミナル インスタンスを開きます。
-
コンピューターでグローバルに使用するために cosmicworks コマンドライン ツールをインストールします。
dotnet tool install cosmicworks --global --version 1.*
💡 このコマンドが完了するまで数分かかる場合があります。 過去にこのツールの最新バージョンを既にインストールしている場合は、このコマンドによって警告メッセージ (*ツール ‘cosmicworks’ は既にインストールされています) が出力されます。
-
cosmicworks を実行し、次のコマンドライン オプションを使用して Azure Cosmos DB アカウントをシードします。
オプション Value –endpoint このラボで先ほど確認したエンドポイントの値 –key このラボで先ほど確認したキーの値 –datasets product cosmicworks --endpoint <cosmos-endpoint> --key <cosmos-key> --datasets product
📝 たとえば、エンドポイントが https://dp420.documents.azure.com:443/ で、キーが fDR2ci9QgkdkvERTQ== の場合、コマンドは次のようになります。
cosmicworks --endpoint https://dp420.documents.azure.com:443/ --key fDR2ci9QgkdkvERTQ== --datasets product
-
cosmicworks コマンドによって、データベース、コンテナー、および項目がアカウントに設定されるまで待ちます。
-
統合ターミナルを閉じます。
-
Web ブラウザーに戻り、新しいタブを開いて、Azure portal (
portal.azure.com
) に移動します。 -
[リソース グループ] を選択し、このラボで先ほど作成または表示したリソース グループを選び、このラボで作成した Azure Cosmos DB アカウント リソースを選択します。
-
Azure Cosmos DB アカウント リソース内で、 [データ エクスプローラー] ペインに移動します。
-
[データ エクスプローラー] で、cosmicworksデータベース ノード、products コンテナー ノードの順に展開してから、 [項目] を選択します。
-
products コンテナー内のさまざまな JSON 項目を確認して選択します。 これらは、前の手順で使用したコマンドライン ツールによって作成された項目です。
-
[スケールと設定] ノードを選択します。 [スケールと設定] タブで、 [手動] を選択し、必要なスループット設定を 4000 RU/s から 400 RU/s に更新し、変更内容を保存します。
-
[データ エクスプローラー] ペインで、 [新しいコンテナー] を選択します。
-
[新しいコンテナー] ポップアップで、各設定に次の値を入力してから [OK] を選択します。
設定 Value データベース ID ’‘既存の | cosmicworks を使用します’’ コンテナー ID flatproducts
パーティション キー /category
コンテナーのスループット (自動スケーリング) [手動] RU/秒 400
-
[データ エクスプローラー] ペインに戻り、cosmicworks データベース ノードを展開し、階層内の flatproducts コンテナー ノードを確認します。
-
Azure portal の [ホーム] に戻ります。
Azure Data Factory リソースを作成する
これで Azure Cosmos DB for NoSQL リソースが配置されたので、Azure Data Factory リソースを作成し、NoSQL API コンテナー間で 1 回限りのデータ移動を実行してデータの抽出、変換、および別の NoSQL API コンテナーへの読み込みを行うために必要なすべてのコンポーネントと接続を構成します。
-
[+ リソースの作成] を選択し、Data Factory を検索してから、次の設定で新しい Data Factory リソースを作成し、残りのすべての設定を既定値のままにします。
設定 Value サブスクリプション ’‘既存の Azure サブスクリプション’’ リソース グループ ’‘既存のリソース グループを選択するか、新しいものを作成します’’ 名前 ’‘グローバルに一意の名前を入力します’’ リージョン ’‘使用可能なリージョンを選びます’’ Version V2 Git 構成 Git は後で構成します 📝 ご利用のラボ環境には、新しいリソース グループを作成できない制限が存在する場合があります。 その場合は、事前に作成されている既存のリソース グループを使用します。
-
デプロイ タスクが完了するまで待ってから、このタスクを続行してください。
-
新しく作成された Data Factory リソースに移動し、[スタジオの起動] を選択します。
💡 または、(
adf.azure.com/home
) に移動して、新しく作成された Data Factory リソースを選択し、ホーム アイコンを選択することができます。 -
ホーム画面から、 [取り込み] オプションを選択してクイック ウィザードを起動し、スケール操作で 1 回限りのデータ コピーを実行し、ウィザードの [プロパティ] ステップに進みます。
-
まず、ウィザードの [プロパティ] ステップで、 [タスクの種類] セクションの [組み込みコピー タスク] を選択します。
-
[タスクの周期またはスケジュール] セクションで、 [今すぐ実行] を選択し、 [次へ] を選択してウィザードの [ソース] ステップに進みます。
-
ウィザードの [ソース] ステップの [ソースの種類] 一覧で、[Azure Cosmos DB for NoSQL] を選択します。
-
[接続] セクションで、 [+ 新しい接続] を選択します。
-
[新しい接続 (Azure Cosmos DB for NoSQL)] ポップアップで、次の値を使用して新しい接続を構成し、[作成] を選択します。
設定 Value 名前 CosmosSqlConn
統合ランタイム経由で接続 AutoResolveIntegrationRuntime 認証方法 ’‘アカウント キー | 接続文字列’’ Account selection method (アカウントの選択方法) Azure サブスクリプションから Azure サブスクリプション ’‘既存の Azure サブスクリプション’’ Azure Cosmos DB アカウント名 ’‘このラボで先ほど選択した既存の Azure Cosmos DB アカウント名’’ データベース名 cosmicworks -
[ソース データ ストア] セクションに戻り、 [ソース テーブル] セクション内で [クエリの使用] を選択します。
-
[テーブル名] 一覧で、 [products] を選択します。
-
クエリ エディターで、既存のコンテンツを削除し、次のクエリを入力します。
SELECT p.name, p.categoryName as category, p.price FROM products p
-
[データのプレビュー] を選択して、クエリの有効性をテストします。 [次へ] を選択して、ウィザードの [ターゲット] ステップに進みます。
-
ウィザードの [宛先] ステップの [宛先の種類] 一覧で、[Azure Cosmos DB for NoSQL] を選択します。
-
[接続] 一覧で、 [CosmosSqlConn] を選択します。
-
[ターゲット] 一覧で、 [flatproducts] を選択してから、 [次へ] を選択してウィザードの [設定] ステップに進みます。
-
ウィザードの [設定] ステップで、 [タスク名] フィールドに「
FlattenAndMoveData
」と入力します。 -
残りのすべてのフィールドは既定の空白値のままにし、 [次へ] を選択してウィザードの最後のステップに進みます。
-
ウィザードで選択したステップの [概要] を確認し、 [次へ] を選択します。
-
デプロイのさまざまなステップを確認します。 デプロイが完了したら、 [完了] を選択します。
-
Azure Cosmos DB アカウントがあるブラウザー タブに戻り、データ エクスプローラー ウィンドウに移動します。
-
[データ エクスプローラー] で、cosmicworks データベース ノードを展開し、flatproducts コンテナー ノードを選択してから、 [新しい SQL クエリ] を選択します。
-
エディター領域のコンテンツを削除します。
-
名前が HL ヘッドセットと同じであるすべてのドキュメントを返す新しい SQL クエリを作成します。
SELECT p.name, p.category, p.price FROM flatproducts p WHERE p.name = 'HL Headset'
-
[クエリの実行] を選択します。
-
クエリの結果を確認します。
-
Web ブラウザーのウィンドウまたはタブを閉じます。