Azure Data Factory を使用して Azure Blob Storage から Azure SQL Database のデータベースにデータをコピーする

適用対象: Azure Data Factory Azure Synapse Analytics

ヒント

企業向けのオールインワン分析ソリューション、Microsoft Fabric の Data Factory をお試しください。 Microsoft Fabric は、データ移動からデータ サイエンス、リアルタイム分析、ビジネス インテリジェンス、レポートまで、あらゆるものをカバーしています。 無料で新しい試用版を開始する方法について説明します。

このチュートリアルでは、Azure Data Factory ユーザー インターフェイス (UI) を使用してデータ ファクトリを作成します。 このデータ ファクトリのパイプラインでは、Azure Blob Storage から Azure SQL Database のデータベースにデータをコピーします。 このチュートリアルの構成パターンは、ファイルベースのデータ ストアからリレーショナル データ ストアへのコピーに適用されます。 ソースおよびシンクとしてサポートされているデータ ストアの一覧については、サポートされているデータ ストアに関する表を参照してください。

Note

Data Factory を初めて使用する場合は、「Azure Data Factory の概要」を参照してください。

このチュートリアルでは、以下の手順を実行します。

  • データ ファクトリを作成します。
  • コピー アクティビティを含むパイプラインを作成します。
  • パイプラインをテスト実行します。
  • パイプラインを手動でトリガーします。
  • スケジュールに基づいてパイプラインをトリガーします。
  • パイプラインとアクティビティの実行を監視します。

前提条件

  • Azure サブスクリプション。 Azure サブスクリプションをお持ちでない場合は、開始する前に無料の Azure アカウントを作成してください。
  • Azure ストレージ アカウント。 Blob Storage を "ソース" データ ストアとして使用します。 ストレージ アカウントがない場合の作成手順については、Azure のストレージ アカウントの作成に関するページを参照してください。
  • Azure SQL データベース。 データベースを "シンク" データ ストアとして使用します。 Azure SQL Database のデータベースがない場合の作成手順については、Azure SQL Database のデータベースの作成に関するページを参照してください。

BLOB と SQL テーブルを作成する

ここからは、次の手順を実行して、チュートリアルで使用する Blob Storage と SQL データベースを準備します。

ソース BLOB を作成する

  1. メモ帳を起動します。 次のテキストをコピーし、emp.txt ファイルとしてディスクに保存します。

    FirstName,LastName
    John,Doe
    Jane,Doe
    
  2. Blob Storage に adftutorial という名前のコンテナーを作成します。 このコンテナーに input という名前のフォルダーを作成します。 次に、input フォルダーに emp.txt ファイルをアップロードします。 Azure Portal を使用するか、または Azure Storage Explorer などのツールを使用して、これらのタスクを実行します。

シンク SQL テーブルを作成する

  1. 次の SQL スクリプトを使用して、dbo.emp テーブルをデータベースに作成します。

    CREATE TABLE dbo.emp
    (
        ID int IDENTITY(1,1) NOT NULL,
        FirstName varchar(50),
        LastName varchar(50)
    )
    GO
    
    CREATE CLUSTERED INDEX IX_emp_ID ON dbo.emp (ID);
    
  2. Azure サービスに SQL Server へのアクセスを許可します。 Data Factory から SQL Server にデータを書き込むことができるように、SQL Server で [Azure サービスへのアクセスを許可]オンになっていることを確認します。 この設定を確認して有効にするには、論理 SQL サーバーで [概要]、[サーバー ファイアウォールの設定] の順に移動し、[Azure サービスへのアクセスを許可][オン] に設定します。

Data Factory の作成

この手順では、データ ファクトリを作成するほか、Data Factory UI を起動してそのデータ ファクトリにパイプラインを作成します。

  1. Microsoft Edge または Google Chrome を開きます。 現在、Data Factory の UI がサポートされる Web ブラウザーは Microsoft Edge と Google Chrome だけです。

  2. 左側のメニューで、 [リソースの作成]>[統合]>[Data Factory] を選択します。

  3. [Create Data Factory]\(データ ファクトリの作成\) ページの [基本] タブで、データ ファクトリを作成する Azure サブスクリプションを選択します。

  4. [リソース グループ] で、次の手順のいずれかを行います。

    a. ドロップダウン リストから既存のリソース グループを選択します。

    b. [新規作成] を選択し、新しいリソース グループの名前を入力します。

    リソース グループの詳細については、リソース グループを使用した Azure のリソースの管理に関するページを参照してください。

  5. [リージョン] で、データ ファクトリの場所を選択します。 サポートされている場所のみがドロップダウン リストに表示されます。 データ ファクトリによって使用されるデータ ストア (Azure Storage、SQL Database など) やコンピューティング (Azure HDInsight など) は、他のリージョンに存在していてもかまいません。

  6. [名前] で、「ADFTutorialDataFactory」と入力します。

    Azure データ ファクトリの名前は グローバルに一意にする必要があります。 データ ファクトリの名前の値に関するエラー メッセージが表示された場合は、別の名前を入力してください。 (yournameADFTutorialDataFactory など)。 Data Factory アーティファクトの名前付け規則については、Data Factory の名前付け規則に関するページを参照してください。

    New data factory error message for duplicate name.

  7. [バージョン] で、 [V2] を選択します。

  8. 上部にある [Git configuration]\(Git 構成\) タブを選択し、 [Configure Git later]\(後で Git を構成する\) チェック ボックスをオンにします。

  9. [確認と作成] を選択し、検証に成功したら [作成] を選択します。

  10. 作成が完了すると、その旨が通知センターに表示されます。 [リソースに移動] を選択して、Data factory ページに移動します。

  11. [Open Azure Data Factory Studio]\(Azure Data Factory Studio を開く\) タイルで [開く] を選択して、別のタブで Azure Data Factory UI を起動します。

パイプラインを作成する

この手順では、コピー アクティビティが含まれたパイプラインをデータ ファクトリに作成します。 コピー アクティビティによって、Blob Storage から SQL Database にデータがコピーされます。 クイックスタート チュートリアルでは、次の手順でパイプラインを作成しました。

  1. リンクされたサービスを作成します。
  2. 入力データセットと出力データセットを作成します。
  3. パイプラインを作成します。

このチュートリアルでは、最初にパイプラインを作成します。 その後、パイプラインの構成に必要な場合にリンクされたサービスとデータセットを作成します。

  1. ホーム ページで [調整] を選択します。

    Screenshot that shows the ADF home page.

  2. [全般] パネルの [プロパティ] 下で、 [名前]CopyPipeline を指定します。 次に、右上隅にある [プロパティ] アイコンをクリックしてパネルを折りたたみます。

  3. [アクティビティ] ツール ボックスで [Move and Transform]\(移動と変換\) カテゴリを展開し、ツール ボックスからパイプライン デザイナー画面に [データのコピー] アクティビティをドラッグ アンド ドロップします。 [名前] に「CopyFromBlobToSql」と指定します。

    Copy activity

ソースの構成

ヒント

このチュートリアルでは、ソース データ ストアの認証の種類として "アカウント キー" を使用しますが、サポートされている他の認証方法を選ぶこともできます。"SAS URI"、"サービス プリンシパル"、"マネージド ID" を必要に応じて使用してください。 詳細については、この記事の対応するセクションを参照してください。 さらに、データ ストアのシークレットを安全に格納するために、Azure Key Vault の使用をお勧めします。 詳細については、この記事を参照してください。

  1. [ソース] タブに移動します。 [+ 新規] を選択して、ソース データセットを作成します。

  2. [新しいデータセット] ダイアログ ボックスで [Azure Blob Storage] を選択し、 [続行] をクリックします。 ソース データは Blob Storage にあるので、ソース データセットには Azure Blob Storage を選択します。

  3. [形式の選択] ダイアログ ボックスで、データの形式の種類を選択して、 [続行] を選択します。

  4. [プロパティの設定] ダイアログ ボックスで、[名前] に「SourceBlobDataset」を入力します。 [First row as header]\(先頭の行を見出しとして使用\) のチェック ボックスをオンにします。 [リンクされたサービス] ボックスの下にある [+ 新規] を選択します。

  5. [New Linked Service (Azure Blob Storage)]\(新しいリンクされたサービス (Azure Blob Storage)\) ダイアログ ボックスで、名前として「AzureStorageLinkedService」と入力し、 [ストレージ アカウント名] の一覧からご自身のストレージ アカウントを選択します。 接続をテストし、 [作成] を選択して、リンクされたサービスをデプロイします。

  6. リンクされたサービスが作成されると、 [プロパティの設定] ページに戻ります。 [ファイル パス] の横にある [参照] を選択します。

  7. adftutorial/input フォルダーに移動し、emp.txt ファイルを選択して、 [OK] を選択します。

  8. [OK] を選択します。 自動的にパイプライン ページに移動します。 [ソース] タブで、 [SourceBlobDataset] が選択されていることを確認します。 このページのデータをプレビューするには、 [データのプレビュー] を選択します。

    Source dataset

シンクの構成

ヒント

このチュートリアルでは、シンク データ ストアの認証の種類として "SQL 認証" を使用しますが、サポートされている他の認証方法を選ぶこともできます。必要に応じて、"サービス プリンシパル" と "マネージド ID" を使用できます。 詳細については、この記事の対応するセクションを参照してください。 さらに、データ ストアのシークレットを安全に格納するために、Azure Key Vault の使用をお勧めします。 詳細については、この記事を参照してください。

  1. [シンク] タブに移動し、 [+ 新規] を選択してシンク データセットを作成します。

  2. [新しいデータセット] ダイアログ ボックスで、検索ボックスに「SQL」と入力してコネクタをフィルター処理し、 [Azure SQL Database] を選択して、 [続行] を選択します。 このチュートリアルでは、SQL データベースにデータをコピーします。

  3. [プロパティの設定] ダイアログ ボックスで、[名前] に「OutputSqlDataset」を入力します。 [リンクされたサービス] ボックスの一覧から [+ 新規] を選択します。 データセットをリンクされたサービスに関連付ける必要があります。 リンクされたサービスには、Data Factory が実行時に SQL Database に接続するために使用する接続文字列が含まれています。 データセットは、コンテナー、フォルダー、データのコピー先のファイル (オプション) を指定します。

  4. [New Linked Service (Azure SQL Database)]\(新しいリンクされたサービス (Azure SQL Database)\) ダイアログ ボックスで、次の手順を実行します。

    a. [名前] に「AzureSqlDatabaseLinkedService」と入力します。

    b. [サーバー名] で、使用する SQL Server インスタンスを選択します。

    c. [データベース名] で、使用するデータベースを選択します。

    d. [ユーザー名] に、ユーザーの名前を入力します。

    e. [パスワード] に、ユーザーのパスワードを入力します。

    f. [テスト接続] を選択して接続をテストします。

    g. [作成] を選択して、リンクされたサービスをデプロイします。

    Save new linked service

  5. [プロパティの設定] ダイアログ ボックスに自動的に移動します。 [テーブル][dbo].[emp] を選択します。 [OK] をクリックします。

  6. パイプラインがあるタブに移動し、 [Sink Dataset]\(シンク データセット\)OutputSqlDataset が選択されていることを確認します。

    Pipeline tab

必要に応じて「コピー アクティビティでのスキーマ マッピング」に従い、コピー元のスキーマをコピー先の対応するスキーマにマッピングすることができます。

パイプラインを検証する

パイプラインを検証するには、ツール バーから [検証] を選択します。

パイプラインに関連付けられている JSON コードを確認するには、右上にある [コード] をクリックします。

パイプラインをデバッグして発行する

Data Factory または独自の Azure Repos Git リポジトリにアーティファクト (リンクされたサービス、データセット、パイプライン) を発行する前に、パイプラインをデバッグできます。

  1. パイプラインをデバッグするには、ツール バーで [デバッグ] を選択します。 ウィンドウ下部の [出力] タブにパイプラインの実行の状態が表示されます。

  2. パイプラインを適切に実行できたら、上部のツール バーで [すべて発行] を選択します。 これにより、作成したエンティティ (データセットとパイプライン) が Data Factory に発行されます。

  3. [正常に発行されました] というメッセージが表示されるまで待機します。 通知メッセージを表示するには、右上にある [通知の表示] (ベル ボタン) をクリックします。

パイプラインを手動でトリガーする

この手順では、前の手順で発行したパイプラインを手動でトリガーします。

  1. ツール バーの [トリガー] を選択し、 [Trigger Now]\(今すぐトリガー\) を選択します。 [Pipeline Run]\(パイプラインの実行\) ページで [OK] を選択します。

  2. 左側の [監視] タブに移動します。 手動トリガーによってトリガーされたパイプラインの実行が表示されます。 [パイプライン名] 列のリンクを使用して、アクティビティの詳細を表示したりパイプラインを再実行したりできます。

    Monitor pipeline runs

  3. パイプラインの実行に関連付けられているアクティビティの実行を表示するには、 [パイプライン名] 列の [CopyPipeline] リンクを選択します。 この例では、アクティビティが 1 つだけなので、一覧に表示されるエントリは 1 つのみです。 コピー操作の詳細を確認するには、 [ACTIVITY NAME]\(アクティビティ名\) 列の [詳細] リンク (眼鏡アイコン) を選択します。 再度パイプラインの実行ビューに移動するには、一番上にある [すべてのパイプラインの実行] を選択します。 表示を更新するには、 [最新の情報に更新] を選択します。

    Monitor activity runs

  4. データベースの emp テーブルに 2 つの行が追加されていることを確認します。

スケジュールに基づいてパイプラインをトリガーする

このスケジュールでは、パイプラインのスケジュール トリガーを作成します。 このトリガーは、指定されたスケジュール (1 時間に 1 回、毎日など) に基づいてパイプラインを実行します。 ここでは、指定された終了日時まで毎分実行されるようトリガーを設定します。

  1. [監視] タブの上にある左側の [作成者] タブに移動します。

  2. パイプラインに移動し、ツール バーの [トリガー] をクリックして、 [新規/編集] を選択します。

  3. [トリガーの追加] ダイアログ ボックスで、 [Choose trigger]\(トリガーの選択\) 領域の [+ 新規] を選択します。

  4. [新しいトリガー] ウィンドウで、次の手順を実行します。

    a. [名前] に「RunEveryMinute」と入力します。

    b. トリガーの [開始日] を更新します。 日付が現在の日時より前の場合は、変更が発行されたらトリガーが有効になります。

    c. [タイム ゾーン] のドロップダウン リストを選択します。

    d. [繰り返し][1 分ごと] に設定します。

    e. [終了日の指定] のチェック ボックスをオンにし、 [終了日] の部分を現在の日時の数分後に更新します。 トリガーは、変更を発行した後にのみアクティブ化されます。 これをわずか数分後に設定し、それまでに発行しなかった場合、トリガー実行は表示されません。

    f. [アクティブ化] オプションで [はい] を選択します。

    g. [OK] を選択します。

    重要

    パイプラインの実行ごとにコストが関連付けられるため、終了日は適切に設定してください。

  5. [トリガーの編集] ページで警告を確認し、 [保存] を選択します。 この例のパイプラインにはパラメーターはありません。

  6. [すべて発行] をクリックして、変更を発行します。

  7. 左側の [モニター] タブに移動して、トリガーされたパイプラインの実行を確認します。

    Triggered pipeline runs

  8. パイプラインの実行ビューからトリガーの実行ビューに切り替えるには、ウィンドウの左側の [Trigger Runs](トリガーの実行) を選択します。

  9. トリガーの実行が一覧で表示されます。

  10. 指定された終了日時まで、(各パイプライン実行について) 1 分ごとに 2 つの行が emp テーブルに挿入されていることを確認します。

このサンプルのパイプラインは、Blob Storage 内のある場所から別の場所にデータをコピーします。 以下の方法を学習しました。

  • データ ファクトリを作成します。
  • コピー アクティビティを含むパイプラインを作成します。
  • パイプラインをテスト実行します。
  • パイプラインを手動でトリガーします。
  • スケジュールに基づいてパイプラインをトリガーします。
  • パイプラインとアクティビティの実行を監視します。

オンプレミスからクラウドにデータをコピーする方法について学習するには、次のチュートリアルに進んでください。