チュートリアル:REST API を使用して、データをコピーする Azure Data Factory パイプラインを作成するTutorial: Use REST API to create an Azure Data Factory pipeline to copy data

注意

この記事は、Data Factory のバージョン 1 に適用されます。This article applies to version 1 of Data Factory. 現在のバージョンの Data Factory サービスを使用している場合は、コピー アクティビティのチュートリアルに関するページを参照してください。If you are using the current version of the Data Factory service, see copy activity tutorial.

この記事では、REST API を使用して、Azure Blob Storage から Azure SQL データベースにデータをコピーするパイプラインを備えたデータ ファクトリを作成します。In this article, you learn how to use REST API to create a data factory with a pipeline that copies data from an Azure blob storage to an Azure SQL database. Azure Data Factory の使用経験がない場合は、このチュートリアルを実行する前に、「Azure Data Factory の概要」を参照してください。If you are new to Azure Data Factory, read through the Introduction to Azure Data Factory article before doing this tutorial.

このチュートリアルでは、1 つのアクティビティ (コピー アクティビティ) が含まれたパイプラインを作成します。In this tutorial, you create a pipeline with one activity in it: Copy Activity. コピー アクティビティは、サポートされているデータ ストアからサポートされているシンク データ ストアにデータをコピーします。The copy activity copies data from a supported data store to a supported sink data store. ソースおよびシンクとしてサポートされているデータ ストアの一覧については、サポートされているデータ ストアに関するセクションを参照してください。For a list of data stores supported as sources and sinks, see supported data stores. このアクティビティは、安全で信頼性の高いスケーラブルな方法によってさまざまなデータ ストア間でデータをコピーできる、グローバルに利用可能なサービスによって動作します。The activity is powered by a globally available service that can copy data between various data stores in a secure, reliable, and scalable way. コピー アクティビティの詳細については、データ移動アクティビティに関する記事を参照してください。For more information about the Copy Activity, see Data Movement Activities.

1 つのパイプラインには複数のアクティビティを含めることができます。A pipeline can have more than one activity. また、1 つのアクティビティの出力データセットを別のアクティビティの入力データセットとして指定することで、2 つのアクティビティを連鎖させる (アクティビティを連続的に実行する) ことができます。And, you can chain two activities (run one activity after another) by setting the output dataset of one activity as the input dataset of the other activity. 詳細については、「パイプライン内の複数アクティビティ」を参照してください。For more information, see multiple activities in a pipeline.

注意

この記事では、すべての Data Factory REST API を取り上げているわけではありません。This article does not cover all the Data Factory REST API. Data Factory REST API に関する包括的なドキュメントについては、 Data Factory REST API リファレンス を参照してください。See Data Factory REST API Reference for comprehensive documentation on Data Factory cmdlets.

このチュートリアルのデータ パイプラインでは、ソース データ ストアからターゲット データ ストアにデータをコピーします。The data pipeline in this tutorial copies data from a source data store to a destination data store. Azure Data Factory を使用してデータを変換する方法のチュートリアルについては、Hadoop クラスターを使用してデータを変換するパイプラインを作成する方法のチュートリアルを参照してください。For a tutorial on how to transform data using Azure Data Factory, see Tutorial: Build a pipeline to transform data using Hadoop cluster.

前提条件Prerequisites

注意

この記事は、新しい Azure PowerShell Az モジュールを使用するために更新されました。This article has been updated to use the new Azure PowerShell Az module. AzureRM モジュールはまだ使用でき、少なくとも 2020 年 12 月までは引き続きバグ修正が行われます。You can still use the AzureRM module, which will continue to receive bug fixes until at least December 2020. Az モジュールと AzureRM の互換性の詳細については、「Introducing the new Azure PowerShell Az module (新しい Azure PowerShell Az モジュールの概要)」を参照してください。To learn more about the new Az module and AzureRM compatibility, see Introducing the new Azure PowerShell Az module. Az モジュールのインストール手順については、Azure PowerShell のインストールを参照してください。For Az module installation instructions, see Install Azure PowerShell.

  • チュートリアルの概要 」に目を通し、 前提条件 の手順を完了する必要があります。Go through Tutorial Overview and complete the prerequisite steps.

  • コンピューターに Curl をインストールします。Install Curl on your machine. データ ファクトリを作成するには、Curl ツールと REST コマンドを使用します。You use the Curl tool with REST commands to create a data factory.

  • この記事 の手順に従って、次の操作を行います。Follow instructions from this article to:

    1. Azure Active Directory に、 ADFCopyTutorialApp という名前の Web アプリケーションを作成します。Create a Web application named ADFCopyTutorialApp in Azure Active Directory.
    2. クライアント ID秘密キーを取得します。Get client ID and secret key.
    3. テナント IDを取得します。Get tenant ID.
    4. ADFCopyTutorialApp アプリケーションを Data Factory 共同作成者ロールに割り当てます。Assign the ADFCopyTutorialApp application to the Data Factory Contributor role.
  • Azure PowerShellをインストールします。Install Azure PowerShell.

  • PowerShell を起動し、次の手順を実行します。Launch PowerShell and do the following steps. Azure PowerShell は、このチュートリアルが終わるまで開いたままにしておいてください。Keep Azure PowerShell open until the end of this tutorial. Azure PowerShell を閉じて再度開いた場合は、これらのコマンドをもう一度実行する必要があります。If you close and reopen, you need to run the commands again.

    1. 次のコマンドを実行して、Azure Portal へのサインインに使用するユーザー名とパスワードを入力します。Run the following command and enter the user name and password that you use to sign in to the Azure portal:

      Connect-AzAccount
      
    2. 次のコマンドを実行して、このアカウントのすべてのサブスクリプションを表示します。Run the following command to view all the subscriptions for this account:

      Get-AzSubscription
      
    3. 次のコマンドを実行して、使用するサブスクリプションを選択します。Run the following command to select the subscription that you want to work with. <NameOfAzureSubscription> を自分の Azure サブスクリプションの名前で置き換えます。Replace <NameOfAzureSubscription> with the name of your Azure subscription.

      Get-AzSubscription -SubscriptionName <NameOfAzureSubscription> | Set-AzContext
      
    4. PowerShell で次のコマンドを実行して、 ADFTutorialResourceGroup という名前の Azure リソース グループを作成します。Create an Azure resource group named ADFTutorialResourceGroup by running the following command in the PowerShell:

       New-AzResourceGroup -Name ADFTutorialResourceGroup  -Location "West US"
      

      リソース グループが既に存在する場合は、それを更新するか (Y) そのまま保持するか (N) を指定します。If the resource group already exists, you specify whether to update it (Y) or keep it as (N).

      このチュートリアルの一部の手順は、ADFTutorialResourceGroup という名前のリソース グループを使用することを前提としています。Some of the steps in this tutorial assume that you use the resource group named ADFTutorialResourceGroup. 異なるリソース グループを使用する場合は、このチュートリアルで ADFTutorialResourceGroup の代わりにそのリソース グループの名前を使用する必要があります。If you use a different resource group, you need to use the name of your resource group in place of ADFTutorialResourceGroup in this tutorial.

JSON 定義の作成Create JSON definitions

curl.exe があるフォルダーに、以下の JSON ファイルを作成します。Create following JSON files in the folder where curl.exe is located.

datafactory.jsondatafactory.json

重要

名前はグローバルに一意である必要があります。一意の名前にするために、ADFCopyTutorialDF にプレフィックス/サフィックスを付けることができます。Name must be globally unique, so you may want to prefix/suffix ADFCopyTutorialDF to make it a unique name.

{  
    "name": "ADFCopyTutorialDF",  
    "location": "WestUS"
}  

azurestoragelinkedservice.jsonazurestoragelinkedservice.json

重要

accountnameaccountkey を Azure ストレージ アカウントの名前とキーに置き換えます。Replace accountname and accountkey with name and key of your Azure storage account. ストレージ アクセス キーを取得する方法については、「 ストレージ アクセス キーの表示、コピーおよび再生成」を参照してください。To learn how to get your storage access key, see View, copy and regenerate storage access keys.

{
    "name": "AzureStorageLinkedService",
    "properties": {
        "type": "AzureStorage",
        "typeProperties": {
            "connectionString": "DefaultEndpointsProtocol=https;AccountName=<accountname>;AccountKey=<accountkey>"
        }
    }
}

JSON プロパティの詳細については、「Azure Storage のリンクされたサービス」を参照してください。For details about JSON properties, see Azure Storage linked service.

azuresqllinkedservice.jsonazuresqllinkedservice.json

重要

servernamedatabasenameusernamepassword を、Azure SQL サーバーの名前、SQL データベースの名前、ユーザー アカウント、アカウントのパスワードに置き換えます。Replace servername, databasename, username, and password with name of your Azure SQL server, name of SQL database, user account, and password for the account.

{
    "name": "AzureSqlLinkedService",
    "properties": {
        "type": "AzureSqlDatabase",
        "description": "",
        "typeProperties": {
            "connectionString": "Data Source=tcp:<servername>.database.windows.net,1433;Initial Catalog=<databasename>;User ID=<username>;Password=<password>;Integrated Security=False;Encrypt=True;Connect Timeout=30"
        }
    }
}

JSON プロパティの詳細については、Azure SQL のリンクされたサービスに関するセクションを参照してください。For details about JSON properties, see Azure SQL linked service.

inputdataset.jsoninputdataset.json

{
  "name": "AzureBlobInput",
  "properties": {
    "structure": [
      {
        "name": "FirstName",
        "type": "String"
      },
      {
        "name": "LastName",
        "type": "String"
      }
    ],
    "type": "AzureBlob",
    "linkedServiceName": "AzureStorageLinkedService",
    "typeProperties": {
      "folderPath": "adftutorial/",
      "fileName": "emp.txt",
      "format": {
        "type": "TextFormat",
        "columnDelimiter": ","
      }
    },
    "external": true,
    "availability": {
      "frequency": "Hour",
      "interval": 1
    }
  }
}

次の表に、このスニペットで使用される JSON プロパティの説明を示します。The following table provides descriptions for the JSON properties used in the snippet:

プロパティProperty 説明Description
typetype データは Azure Blob Storage に存在するため、type プロパティを AzureBlob に設定しています。The type property is set to AzureBlob because data resides in an Azure blob storage.
linkedServiceNamelinkedServiceName 前に作成した AzureStorageLinkedService を参照します。Refers to the AzureStorageLinkedService that you created earlier.
folderPathfolderPath BLOB コンテナーと、入力 BLOB を格納するフォルダーを指定します。Specifies the blob container and the folder that contains input blobs. このチュートリアルでは、adftutorial は BLOB コンテナーで、フォルダーはルート フォルダーです。In this tutorial, adftutorial is the blob container and folder is the root folder.
fileNamefileName このプロパティは省略可能です。This property is optional. このプロパティを省略した場合は、folderPath のすべてのファイルが取得されます。If you omit this property, all files from the folderPath are picked. このチュートリアルでは fileName に emp.txt が指定されているため、このファイルのみが処理のために取得されます。In this tutorial, emp.txt is specified for the fileName, so only that file is picked up for processing.
format -> typeformat -> type 入力ファイルはテキスト形式のため、TextFormat を使用します。The input file is in the text format, so we use TextFormat.
columnDelimitercolumnDelimiter 入力ファイル内の列はコンマ (,) で区切られています。The columns in the input file are delimited by comma character (,).
frequency/intervalfrequency/interval frequency を Hour に設定し、interval を 1 に設定しています。つまり、1 時間ごとに入力スライスが取得されます。The frequency is set to Hour and interval is set to 1, which means that the input slices are available hourly. 言い換えると、Data Factory サービスは、指定された BLOB コンテナー (adftutorial) のルート フォルダーにある入力データを 1 時間ごとに検索します。In other words, the Data Factory service looks for input data every hour in the root folder of blob container (adftutorial) you specified. パイプラインの開始時刻の前または終了時刻の後ではなく、開始時刻と終了時刻の間のデータが検索されます。It looks for the data within the pipeline start and end times, not before or after these times.
externalexternal このパイプラインによってデータが生成されない場合は、このプロパティを true に設定します。This property is set to true if the data is not generated by this pipeline. このチュートリアルの入力データは emp.txt ファイルに存在し、このパイプラインで生成されるわけではないため、このプロパティを true に設定します。The input data in this tutorial is in the emp.txt file, which is not generated by this pipeline, so we set this property to true.

これらの JSON プロパティの詳細については、Azure BLOB コネクタに関する記事を参照してください。For more information about these JSON properties, see Azure Blob connector article.

outputdataset.jsonoutputdataset.json

{
  "name": "AzureSqlOutput",
  "properties": {
    "structure": [
      {
        "name": "FirstName",
        "type": "String"
      },
      {
        "name": "LastName",
        "type": "String"
      }
    ],
    "type": "AzureSqlTable",
    "linkedServiceName": "AzureSqlLinkedService",
    "typeProperties": {
      "tableName": "emp"
    },
    "availability": {
      "frequency": "Hour",
      "interval": 1
    }
  }
}

次の表に、このスニペットで使用される JSON プロパティの説明を示します。The following table provides descriptions for the JSON properties used in the snippet:

プロパティProperty 説明Description
typetype type プロパティを AzureSqlTable に設定します。これは、データを Azure SQL データベースのテーブルにコピーするためです。The type property is set to AzureSqlTable because data is copied to a table in an Azure SQL database.
linkedServiceNamelinkedServiceName 前に作成した AzureSqlLinkedService を参照します。Refers to the AzureSqlLinkedService that you created earlier.
tableNametableName データのコピー先となるテーブルを指定します。Specified the table to which the data is copied.
frequency/intervalfrequency/interval frequency は Hour、interval は 1 に、それぞれ設定されています。これは、出力スライスがパイプラインの開始時刻から終了時刻までの間 1 時間ごとに生成されることを表します (出力スライスは、開始時刻の前および終了時刻の後には生成されません)。The frequency is set to Hour and interval is 1, which means that the output slices are produced hourly between the pipeline start and end times, not before or after these times.

データベース内の emp テーブルには、IDFirstNameLastName の 3 つの列があります。There are three columns – ID, FirstName, and LastName – in the emp table in the database. ID は ID 列であるため、ここで指定する必要があるのは FirstNameLastName のみです。ID is an identity column, so you need to specify only FirstName and LastName here.

これらの JSON プロパティの詳細については、Azure SQL コネクタに関する記事を参照してください。For more information about these JSON properties, see Azure SQL connector article.

pipeline.jsonpipeline.json

{
  "name": "ADFTutorialPipeline",
  "properties": {
    "description": "Copy data from a blob to Azure SQL table",
    "activities": [
      {
        "name": "CopyFromBlobToSQL",
        "description": "Push Regional Effectiveness Campaign data to Azure SQL database",
        "type": "Copy",
        "inputs": [
          {
            "name": "AzureBlobInput"
          }
        ],
        "outputs": [
          {
            "name": "AzureSqlOutput"
          }
        ],
        "typeProperties": {
          "source": {
            "type": "BlobSource"
          },
          "sink": {
            "type": "SqlSink",
            "writeBatchSize": 10000,
            "writeBatchTimeout": "60:00:00"
          }
        },
        "Policy": {
          "concurrency": 1,
          "executionPriorityOrder": "NewestFirst",
          "retry": 0,
          "timeout": "01:00:00"
        }
      }
    ],
    "start": "2017-05-11T00:00:00Z",
    "end": "2017-05-12T00:00:00Z"
  }
}

以下の点に注意してください。Note the following points:

  • activities セクションに、typeCopy に設定されたアクティビティが 1 つだけあります。In the activities section, there is only one activity whose type is set to Copy. コピー アクティビティの詳細については、データ移動アクティビティに関する記事を参照してください。For more information about the copy activity, see data movement activities. Data Factory ソリューションでは、データ変換アクティビティを使用することもできます。In Data Factory solutions, you can also use data transformation activities.
  • アクティビティの入力は AzureBlobInput に設定され、アクティビティの出力は AzureSqlOutput に設定されています。Input for the activity is set to AzureBlobInput and output for the activity is set to AzureSqlOutput.
  • typeProperties セクションでは、ソースの種類として BlobSource が指定され、シンクの種類として SqlSink が指定されています。In the typeProperties section, BlobSource is specified as the source type and SqlSink is specified as the sink type. コピー アクティビティでソースおよびシンクとしてサポートされているデータ ストアの完全な一覧については、サポートされるデータ ストアに関するセクションを参照してください。For a complete list of data stores supported by the copy activity as sources and sinks, see supported data stores. サポートされているデータ ストアをソースおよびシンクとして使用する方法については、表内のリンクをクリックしてください。To learn how to use a specific supported data store as a source/sink, click the link in the table.

start プロパティの値を現在の日付に置き換え、end プロパティの値を翌日の日付に置き換えます。Replace the value of the start property with the current day and end value with the next day. 日付の部分のみを指定し、時刻の部分をスキップすることもできます。You can specify only the date part and skip the time part of the date time. たとえば、"2017-02-03" と "2017-02-03T00:00:00Z" は同じです。For example, "2017-02-03", which is equivalent to "2017-02-03T00:00:00Z"

start と end の日時は、いずれも ISO 形式である必要があります。Both start and end datetimes must be in ISO format. 例: 2016-10-14T16:32:41Z。For example: 2016-10-14T16:32:41Z. end の時刻は省略可能ですが、このチュートリアルでは使用します。The end time is optional, but we use it in this tutorial.

end プロパティの値を指定しない場合、"start + 48 時間" として計算されます。If you do not specify value for the end property, it is calculated as "start + 48 hours". パイプラインを無期限に実行する場合は、9999-09-09end プロパティの値として指定します。To run the pipeline indefinitely, specify 9999-09-09 as the value for the end property.

前の例では、各データ スライスが 1 時間ごとに生成されるため、データ スライスは 24 個になります。In the preceding example, there are 24 data slices as each data slice is produced hourly.

パイプライン定義内の JSON プロパティの説明については、パイプラインの作成に関する記事を参照してください。For descriptions of JSON properties in a pipeline definition, see create pipelines article. コピー アクティビティ定義内の JSON プロパティの説明については、データ移動アクティビティに関する記事を参照してください。For descriptions of JSON properties in a copy activity definition, see data movement activities. BlobSource でサポートされる JSON プロパティの説明については、Azure BLOB コネクタに関する記事を参照してください。For descriptions of JSON properties supported by BlobSource, see Azure Blob connector article. SqlSink でサポートされる JSON プロパティの説明については、Azure SQL Database コネクタに関する記事を参照してください。For descriptions of JSON properties supported by SqlSink, see Azure SQL Database connector article.

グローバル変数の設定Set global variables

Azure PowerShell で、値を独自の値に置き換えて、以下のコマンドを実行します。In Azure PowerShell, execute the following commands after replacing the values with your own:

重要

クライアント ID、クライアント シークレット、テナント ID、サブスクリプション ID を取得する手順については、「 前提条件 」セクションを参照してください。See Prerequisites section for instructions on getting client ID, client secret, tenant ID, and subscription ID.

$client_id = "<client ID of application in AAD>"
$client_secret = "<client key of application in AAD>"
$tenant = "<Azure tenant ID>";
$subscription_id="<Azure subscription ID>";

$rg = "ADFTutorialResourceGroup"

使用しているデータ ファクトリの名前を更新した後、次のコマンドを実行します。Run the following command after updating the name of the data factory you are using:

$adf = "ADFCopyTutorialDF"

AAD での認証Authenticate with AAD

Azure Active Directory (AAD) で認証するには、次のコマンドを実行します。Run the following command to authenticate with Azure Active Directory (AAD):

$cmd = { .\curl.exe -X POST https://login.microsoftonline.com/$tenant/oauth2/token  -F grant_type=client_credentials  -F resource=https://management.core.windows.net/ -F client_id=$client_id -F client_secret=$client_secret };
$responseToken = Invoke-Command -scriptblock $cmd;
$accessToken = (ConvertFrom-Json $responseToken).access_token;

(ConvertFrom-Json $responseToken) 

データ ファクトリの作成Create data factory

この手順では、ADFCopyTutorialDF という名前の Azure データ ファクトリを作成します。In this step, you create an Azure Data Factory named ADFCopyTutorialDF. データ ファクトリは、1 つまたは複数のパイプラインを持つことができます。A data factory can have one or more pipelines. パイプラインには、1 つまたは複数のアクティビティを含めることができます。A pipeline can have one or more activities in it. たとえば、コピー元データ ストアからコピー先データ ストアにデータをコピーするコピー アクティビティや、For example, a Copy Activity to copy data from a source to a destination data store. Hive スクリプトを実行し、入力データを変換して出力データを生成する HDInsight Hive アクティビティなどを含めることができます。A HDInsight Hive activity to run a Hive script to transform input data to product output data. 以下のコマンドを実行して、データ ファクトリを作成します。Run the following commands to create the data factory:

  1. コマンドを cmdという名前の変数に割り当てます。Assign the command to variable named cmd.

    重要

    ここで指定するデータ ファクトリの名前 (ADFCopyTutorialDF) が、 datafactory.jsonで指定した名前と一致することを確認します。Confirm that the name of the data factory you specify here (ADFCopyTutorialDF) matches the name specified in the datafactory.json.

    $cmd = {.\curl.exe -X PUT -H "Authorization: Bearer $accessToken" -H "Content-Type: application/json" --data “@datafactory.json” https://management.azure.com/subscriptions/$subscription_id/resourcegroups/$rg/providers/Microsoft.DataFactory/datafactories/ADFCopyTutorialDF0411?api-version=2015-10-01};
    
  2. Invoke-Commandを使用して、コマンドを実行します。Run the command by using Invoke-Command.

    $results = Invoke-Command -scriptblock $cmd;
    
  3. 結果を表示します。View the results. データ ファクトリが正常に作成された場合は、results にデータ ファクトリの JSON が表示されます。そうでない場合は、エラー メッセージが表示されます。If the data factory has been successfully created, you see the JSON for the data factory in the results; otherwise, you see an error message.

    Write-Host $results
    

以下の点に注意してください。Note the following points:

  • Azure Data Factory の名前はグローバルに一意にする必要があります。The name of the Azure Data Factory must be globally unique. results に"データ ファクトリ名 "ADFCopyTutorialDF" は使用できません" というエラーが表示される場合は、次の手順に従います。If you see the error in results: Data factory name “ADFCopyTutorialDF” is not available, do the following steps:

    1. datafactory.json ファイルで名前を変更します (たとえば、yournameADFCopyTutorialDF)。Change the name (for example, yournameADFCopyTutorialDF) in the datafactory.json file.

    2. $cmd 変数に値が割り当てられる最初のコマンドで、ADFCopyTutorialDF を新しい名前に置き換え、コマンドを実行します。In the first command where the $cmd variable is assigned a value, replace ADFCopyTutorialDF with the new name and run the command.

    3. REST API を呼び出す次の 2 つのコマンドを実行して、データ ファクトリを作成し、操作の結果を出力します。Run the next two commands to invoke the REST API to create the data factory and print the results of the operation.

      Data Factory アーティファクトの名前付け規則については、 Data Factory - 名前付け規則 に関するトピックを参照してください。See Data Factory - Naming Rules topic for naming rules for Data Factory artifacts.

  • Data Factory インスタンスを作成するには、Azure サブスクリプションの共同作成者または管理者である必要があります。To create Data Factory instances, you need to be a contributor/administrator of the Azure subscription

  • データ ファクトリの名前は今後、DNS 名として登録される可能性があるため、一般ユーザーに表示される場合があります。The name of the data factory may be registered as a DNS name in the future and hence become publicly visible.

  • エラー "This subscription is not registered to use namespace Microsoft.DataFactory (このサブスクリプションは、名前空間 Microsoft.DataFactory を使用するように登録されていません) " が表示された場合は、以下のいずれかの操作を行ってから、もう一度発行してみます。If you receive the error: "This subscription is not registered to use namespace Microsoft.DataFactory", do one of the following and try publishing again:

    • Azure PowerShell で次のコマンドを実行して、Data Factory プロバイダーを登録します。In Azure PowerShell, run the following command to register the Data Factory provider:

      Register-AzResourceProvider -ProviderNamespace Microsoft.DataFactory
      

      Data Factory プロバイダーが登録されたことを確認するには、次のコマンドを実行します。You can run the following command to confirm that the Data Factory provider is registered.

      Get-AzResourceProvider
      
    • Azure サブスクリプションを使用して Azure ポータル にログインし、[Data Factory] ブレードに移動するか、Azure ポータルでデータ ファクトリを作成します。Login using the Azure subscription into the Azure portal and navigate to a Data Factory blade (or) create a data factory in the Azure portal. この操作によって、プロバイダーが自動的に登録されます。This action automatically registers the provider for you.

パイプラインを作成する前に、まず、Data Factory エンティティをいくつか作成する必要があります。Before creating a pipeline, you need to create a few Data Factory entities first. 最初に、ソース データ ストアや保存先データ ストアを自分のデータ ストアにリンクするリンクされたサービスを作成します。You first create linked services to link source and destination data stores to your data store. 次に、リンクされたデータ ストア内のデータを表す入力データセットと出力データセットを定義します。Then, define input and output datasets to represent data in linked data stores. 最後に、これらのデータセットを使用するアクティビティを含むパイプラインを作成します。Finally, create the pipeline with an activity that uses these datasets.

リンクされたサービスを作成しますCreate linked services

データ ストアおよびコンピューティング サービスをデータ ファクトリにリンクするには、リンクされたサービスをデータ ファクトリに作成します。You create linked services in a data factory to link your data stores and compute services to the data factory. このチュートリアルでは、Azure HDInsight、Azure Data Lake Analytics などのコンピューティング サービスを使用しません。In this tutorial, you don't use any compute service such as Azure HDInsight or Azure Data Lake Analytics. ここでは、Azure Storage (ソース) と Azure SQL Database (ターゲット) の 2 種類のデータ ストアを使用します。You use two data stores of type Azure Storage (source) and Azure SQL Database (destination). したがって、AzureStorageLinkedService と AzureSqlLinkedService という名前の 2 つのリンクされたサービスを作成します (タイプ: AzureStorage、AzureSqlDatabase)。Therefore, you create two linked services named AzureStorageLinkedService and AzureSqlLinkedService of types: AzureStorage and AzureSqlDatabase.

AzureStorageLinkedService は、Azure ストレージ アカウントをデータ ファクトリにリンクします。The AzureStorageLinkedService links your Azure storage account to the data factory. このストレージ アカウントは、前提条件の一部としてコンテナーを作成し、データをアップロードしたストレージ アカウントです。This storage account is the one in which you created a container and uploaded the data as part of prerequisites.

AzureSqlLinkedService は、Azure SQL データベースをデータ ファクトリにリンクします。AzureSqlLinkedService links your Azure SQL database to the data factory. Blob Storage からコピーされたデータは、このデータベースに格納されます。The data that is copied from the blob storage is stored in this database. 前提条件の一部として、このデータベースに emp テーブルを作成しました。You created the emp table in this database as part of prerequisites.

Azure Storage のリンクされたサービスを作成するCreate Azure Storage linked service

この手順では、Azure ストレージ アカウントをデータ ファクトリにリンクします。In this step, you link your Azure storage account to your data factory. このセクションで、Azure Storage アカウントの名前とキーを指定します。You specify the name and key of your Azure storage account in this section. Azure Storage のリンクされたサービスの定義に使用する JSON プロパティの詳細については、「Azure Storage のリンクされたサービス」を参照してください。See Azure Storage linked service for details about JSON properties used to define an Azure Storage linked service.

  1. コマンドを cmdという名前の変数に割り当てます。Assign the command to variable named cmd.

    $cmd = {.\curl.exe -X PUT -H "Authorization: Bearer $accessToken" -H "Content-Type: application/json" --data "@azurestoragelinkedservice.json" https://management.azure.com/subscriptions/$subscription_id/resourcegroups/$rg/providers/Microsoft.DataFactory/datafactories/$adf/linkedservices/AzureStorageLinkedService?api-version=2015-10-01};
    
  2. Invoke-Commandを使用して、コマンドを実行します。Run the command by using Invoke-Command.

    $results = Invoke-Command -scriptblock $cmd;
    
  3. 結果を表示します。View the results. リンクされたサービスが正常に作成された場合は、results に、リンクされたサービスの JSON が表示されます。そうでない場合は、エラー メッセージが表示されます。If the linked service has been successfully created, you see the JSON for the linked service in the results; otherwise, you see an error message.

    Write-Host $results
    

Azure SQL のリンクされたサービスの作成Create Azure SQL linked service

この手順では、Azure SQL データベースをデータ ファクトリにリンクします。In this step, you link your Azure SQL database to your data factory. このセクションで、Azure SQL サーバー名、データベース名、ユーザー名、ユーザー パスワードを指定します。You specify the Azure SQL server name, database name, user name, and user password in this section. Azure SQL のリンクされたサービスの定義に使用する JSON プロパティの詳細については、Azure SQL のリンクされたサービスに関するセクションをご覧ください。See Azure SQL linked service for details about JSON properties used to define an Azure SQL linked service.

  1. コマンドを cmdという名前の変数に割り当てます。Assign the command to variable named cmd.

    $cmd = {.\curl.exe -X PUT -H "Authorization: Bearer $accessToken" -H "Content-Type: application/json" --data “@azuresqllinkedservice.json” https://management.azure.com/subscriptions/$subscription_id/resourcegroups/$rg/providers/Microsoft.DataFactory/datafactories/$adf/linkedservices/AzureSqlLinkedService?api-version=2015-10-01};
    
  2. Invoke-Commandを使用して、コマンドを実行します。Run the command by using Invoke-Command.

    $results = Invoke-Command -scriptblock $cmd;
    
  3. 結果を表示します。View the results. リンクされたサービスが正常に作成された場合は、results に、リンクされたサービスの JSON が表示されます。そうでない場合は、エラー メッセージが表示されます。If the linked service has been successfully created, you see the JSON for the linked service in the results; otherwise, you see an error message.

    Write-Host $results
    

データセットを作成するCreate datasets

前の手順では、Azure ストレージ アカウントと Azure SQL データベースをデータ ファクトリにリンクするためのリンクされたサービスを作成しました。In the previous step, you created linked services to link your Azure Storage account and Azure SQL database to your data factory. この手順では、AzureBlobInput と AzureSqlOutput という名前の 2 つのデータセットを定義します。これらはそれぞれ、AzureStorageLinkedService と AzureSqlLinkedService が参照するデータ ストアに格納されている入力データと出力データを表します。In this step, you define two datasets named AzureBlobInput and AzureSqlOutput that represent input and output data that is stored in the data stores referred by AzureStorageLinkedService and AzureSqlLinkedService respectively.

Azure Storage のリンクされたサービスは、Data Factory サービスが実行時に Azure ストレージ アカウントへの接続に使用する接続文字列を指定します。The Azure storage linked service specifies the connection string that Data Factory service uses at run time to connect to your Azure storage account. また、入力 BLOB データセット (AzureBlobInput) は、コンテナーと、入力データが含まれているフォルダーを指定します。And, the input blob dataset (AzureBlobInput) specifies the container and the folder that contains the input data.

同様に、Azure SQL Database のリンクされたサービスは、Data Factory サービスが実行時に Azure SQL データベースへの接続に使用する接続文字列を指定します。Similarly, the Azure SQL Database linked service specifies the connection string that Data Factory service uses at run time to connect to your Azure SQL database. 出力 SQL テーブル データセット (OututDataset) は、BLOB ストレージのデータのコピー先となるデータベース内のテーブルを指定します。And, the output SQL table dataset (OututDataset) specifies the table in the database to which the data from the blob storage is copied.

入力データセットの作成Create input dataset

この手順では、BLOB ファイル (emp.txt) を参照する AzureBlobInput という名前のデータセットを作成します。このファイルは、リンクされたサービス AzureStorageLinkedService が表す Azure Storage 内の BLOB コンテナー (adftutorial) のルート フォルダーにあります。In this step, you create a dataset named AzureBlobInput that points to a blob file (emp.txt) in the root folder of a blob container (adftutorial) in the Azure Storage represented by the AzureStorageLinkedService linked service. fileName の値を指定しなかった場合やこれをスキップした場合、入力フォルダー内のすべての BLOB のデータがターゲットにコピーされます。If you don't specify a value for the fileName (or skip it), data from all blobs in the input folder are copied to the destination. このチュートリアルでは、fileName の値を指定します。In this tutorial, you specify a value for the fileName.

  1. コマンドを cmdという名前の変数に割り当てます。Assign the command to variable named cmd.

    $cmd = {.\curl.exe -X PUT -H "Authorization: Bearer $accessToken" -H "Content-Type: application/json" --data "@inputdataset.json" https://management.azure.com/subscriptions/$subscription_id/resourcegroups/$rg/providers/Microsoft.DataFactory/datafactories/$adf/datasets/AzureBlobInput?api-version=2015-10-01};
    
  2. Invoke-Commandを使用して、コマンドを実行します。Run the command by using Invoke-Command.

    $results = Invoke-Command -scriptblock $cmd;
    
  3. 結果を表示します。View the results. データセットが正常に作成された場合は、results にデータセットの JSON が表示されます。そうでない場合は、エラー メッセージが表示されます。If the dataset has been successfully created, you see the JSON for the dataset in the results; otherwise, you see an error message.

    Write-Host $results
    

出力データセットの作成Create output dataset

Azure SQL Database のリンクされたサービスは、Data Factory サービスが実行時に Azure SQL データベースへの接続に使用する接続文字列を指定します。The Azure SQL Database linked service specifies the connection string that Data Factory service uses at run time to connect to your Azure SQL database. この手順で作成する出力 SQL テーブル データセット (OututDataset) は、Blob Storage のデータのコピー先となるデータベース内のテーブルを指定します。The output SQL table dataset (OututDataset) you create in this step specifies the table in the database to which the data from the blob storage is copied.

  1. コマンドを cmdという名前の変数に割り当てます。Assign the command to variable named cmd.

    $cmd = {.\curl.exe -X PUT -H "Authorization: Bearer $accessToken" -H "Content-Type: application/json" --data "@outputdataset.json" https://management.azure.com/subscriptions/$subscription_id/resourcegroups/$rg/providers/Microsoft.DataFactory/datafactories/$adf/datasets/AzureSqlOutput?api-version=2015-10-01};
    
  2. Invoke-Commandを使用して、コマンドを実行します。Run the command by using Invoke-Command.

    $results = Invoke-Command -scriptblock $cmd;
    
  3. 結果を表示します。View the results. データセットが正常に作成された場合は、results にデータセットの JSON が表示されます。そうでない場合は、エラー メッセージが表示されます。If the dataset has been successfully created, you see the JSON for the dataset in the results; otherwise, you see an error message.

    Write-Host $results
    

パイプラインの作成Create pipeline

この手順では、AzureBlobInput を入力、AzureSqlOutput を出力として使用するコピー アクティビティが含まれたパイプラインを作成します。In this step, you create a pipeline with a copy activity that uses AzureBlobInput as an input and AzureSqlOutput as an output.

現在、スケジュールは出力データセットによって開始されます。Currently, output dataset is what drives the schedule. このチュートリアルでは、1 時間ごとにスライスを生成するように出力データセットを構成します。In this tutorial, output dataset is configured to produce a slice once an hour. パイプラインの開始時刻と終了時刻の差は 1 日 (24 時間) です。The pipeline has a start time and end time that are one day apart, which is 24 hours. したがって、24 個の出力データセットのスライスがパイプラインによって生成されます。Therefore, 24 slices of output dataset are produced by the pipeline.

  1. コマンドを cmdという名前の変数に割り当てます。Assign the command to variable named cmd.

    $cmd = {.\curl.exe -X PUT -H "Authorization: Bearer $accessToken" -H "Content-Type: application/json" --data "@pipeline.json" https://management.azure.com/subscriptions/$subscription_id/resourcegroups/$rg/providers/Microsoft.DataFactory/datafactories/$adf/datapipelines/MyFirstPipeline?api-version=2015-10-01};
    
  2. Invoke-Commandを使用して、コマンドを実行します。Run the command by using Invoke-Command.

    $results = Invoke-Command -scriptblock $cmd;
    
  3. 結果を表示します。View the results. データセットが正常に作成された場合は、results にデータセットの JSON が表示されます。そうでない場合は、エラー メッセージが表示されます。If the dataset has been successfully created, you see the JSON for the dataset in the results; otherwise, you see an error message.

    Write-Host $results
    

お疲れさまでした。Congratulations! Azure Blob Storage から Azure SQL データベースにデータをコピーするパイプラインを持つ Azure データ ファクトリが正常に作成されました。You have successfully created an Azure data factory, with a pipeline that copies data from Azure Blob Storage to Azure SQL database.

パイプラインを監視するMonitor pipeline

この手順では、Data Factory REST API を使用して、パイプラインによって生成されるスライスを監視します。In this step, you use Data Factory REST API to monitor slices being produced by the pipeline.

$ds ="AzureSqlOutput"

重要

次のコマンドで指定される開始時刻と終了時刻が、パイプラインの開始時刻と終了時刻に一致するようにしてください。Make sure that the start and end times specified in the following command match the start and end times of the pipeline.

$cmd = {.\curl.exe -X GET -H "Authorization: Bearer $accessToken" https://management.azure.com/subscriptions/$subscription_id/resourcegroups/$rg/providers/Microsoft.DataFactory/datafactories/$adf/datasets/$ds/slices?start=2017-05-11T00%3a00%3a00.0000000Z"&"end=2017-05-12T00%3a00%3a00.0000000Z"&"api-version=2015-10-01};
$results2 = Invoke-Command -scriptblock $cmd;
IF ((ConvertFrom-Json $results2).value -ne $NULL) {
    ConvertFrom-Json $results2 | Select-Object -Expand value | Format-Table
} else {
        (convertFrom-Json $results2).RemoteException
}

準備完了状態または失敗状態のスライスが見つかるまで、順番に Invoke-Command を実行します。Run the Invoke-Command and the next one until you see a slice in Ready state or Failed state. スライスが Ready 状態のときは、出力データ用の Azure SQL データベース内の emp テーブルを確認します。When the slice is in Ready state, check the emp table in your Azure SQL database for the output data.

スライスごとに、ソース ファイルのデータの 2 つの行が、Azure SQL データベースの emp テーブルにコピーされます。For each slice, two rows of data from the source file are copied to the emp table in the Azure SQL database. そのため、すべてのスライスが正常に処理されると (Ready 状態になると)、emp テーブルに 24 個の新しいレコードが表示されます。Therefore, you see 24 new records in the emp table when all the slices are successfully processed (in Ready state).

まとめSummary

このチュートリアルでは、REST API を使用して Azure データ ファクトリを作成し、Azure BLOB から Azure SQL データベースにデータをコピーしました。In this tutorial, you used REST API to create an Azure data factory to copy data from an Azure blob to an Azure SQL database. 以下は、このチュートリアルで実行した手順の概要です。Here are the high-level steps you performed in this tutorial:

  1. Azure データ ファクトリを作成しました。Created an Azure data factory.
  2. 次の リンクされたサービスを作成しました。Created linked services:
    1. 入力データを保持する Azure ストレージ アカウントをリンクするための、Azure Storage のリンクされたサービス。An Azure Storage linked service to link your Azure Storage account that holds input data.
    2. 出力データを保持する Azure SQL データベースをリンクするための、Azure SQL のリンクされたサービス。An Azure SQL linked service to link your Azure SQL database that holds the output data.
  3. パイプラインの入力データと出力データを記述する データセットを作成しました。Created datasets, which describe input data and output data for pipelines.
  4. ソースとして BlobSource、シンクとして SqlSink を持つコピー アクティビティを含む パイプライン を作成しました。Created a pipeline with a Copy Activity with BlobSource as source and SqlSink as sink.

次の手順Next steps

このチュートリアルでは、Azure Blob Storage をコピー操作のソース データ ストア、Azure SQL データベースをターゲット データ ストアとして使用しました。In this tutorial, you used Azure blob storage as a source data store and an Azure SQL database as a destination data store in a copy operation. 次の表は、コピー アクティビティによってソースおよびターゲットとしてサポートされているデータ ストアの一覧です。The following table provides a list of data stores supported as sources and destinations by the copy activity:

CategoryCategory データ ストアData store ソースとしてサポートSupported as a source シンクとしてサポートSupported as a sink
AzureAzure Azure BLOB StorageAzure Blob storage
  Azure Cosmos DB (SQL API)Azure Cosmos DB (SQL API)
  Azure Data Lake Storage Gen1Azure Data Lake Storage Gen1
  Azure SQL DatabaseAzure SQL Database
  Azure SQL Data WarehouseAzure SQL Data Warehouse
  Azure Search インデックスAzure Search Index
  Azure Table StorageAzure Table storage
データベースDatabases Amazon RedshiftAmazon Redshift
  DB2*DB2*
  MySQL*MySQL*
  Oracle*Oracle*
  PostgreSQL*PostgreSQL*
  SAP Business Warehouse*SAP Business Warehouse*
  SAP HANA*SAP HANA*
  SQL Server*SQL Server*
  Sybase*Sybase*
  Teradata*Teradata*
NoSQLNoSQL Cassandra*Cassandra*
  MongoDB*MongoDB*
ファイルFile Amazon S3Amazon S3
  ファイル システム*File System*
  FTPFTP
  HDFS*HDFS*
  SFTPSFTP
その他Others 汎用 HTTPGeneric HTTP
  汎用 ODataGeneric OData
  汎用 ODBC*Generic ODBC*
  SalesforceSalesforce
  Web テーブル (HTML のテーブル)Web Table (table from HTML)

データ ストアにデータをコピーしたり、データ ストアからデータをコピーしたりする方法を確認するには、表のデータ ストアのリンクをクリックしてください。To learn about how to copy data to/from a data store, click the link for the data store in the table.