チュートリアル:コピー アクティビティがあるパイプラインを .NET API で作成するTutorial: Create a pipeline with Copy Activity using .NET API

注意

この記事は、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.

この記事では、.NET API を使用して、Azure Blob Storage から Azure SQL データベースにデータをコピーするパイプラインを備えたデータ ファクトリを作成します。In this article, you learn how to use .NET 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 の .NET API に関する完全なドキュメントについては、Data Factory .NET API リファレンスを参照してください。For complete documentation on .NET API for Data Factory, see Data Factory .NET API Reference.

このチュートリアルのデータ パイプラインでは、ソース データ ストアからターゲット データ ストアにデータをコピーします。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.

Azure Active Directory にアプリケーションを作成するCreate an application in Azure Active Directory

Azure Active Directory アプリケーションを作成し、アプリケーションのサービス プリンシパルを作成して、 Data Factory 共同作成者 ロールに割り当てます。Create an Azure Active Directory application, create a service principal for the application, and assign it to the Data Factory Contributor role.

  1. PowerShellを起動します。Launch PowerShell.

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

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

    Get-AzSubscription
    
  4. 次のコマンドを実行して、使用するサブスクリプションを選択します。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
    

    重要

    このコマンドの出力から、SubscriptionIdTenantId をメモしておきます。Note down SubscriptionId and TenantId from the output of this command.

  5. 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 の代わりにそのリソース グループの名前を使用する必要があります。If you use a different resource group, you need to use the name of your resource group in place of ADFTutorialResourceGroup in this tutorial.

  6. Azure Active Directory アプリケーションを作成します。Create an Azure Active Directory application.

    $azureAdApplication = New-AzADApplication -DisplayName "ADFCopyTutotiralApp" -HomePage "https://www.contoso.org" -IdentifierUris "https://www.adfcopytutorialapp.org/example" -Password "Pass@word1"
    

    次のエラーが表示された場合は、別の URL を指定して、コマンドをもう一度実行します。If you get the following error, specify a different URL and run the command again.

    Another object with the same value for property identifierUris already exists.
    
  7. AD サービス プリンシパルを作成します。Create the AD service principal.

    New-AzADServicePrincipal -ApplicationId $azureAdApplication.ApplicationId
    
  8. Data Factory 共同作成者 ロールにサービス プリンシパルを追加します。Add service principal to the Data Factory Contributor role.

    New-AzRoleAssignment -RoleDefinitionName "Data Factory Contributor" -ServicePrincipalName $azureAdApplication.ApplicationId.Guid
    
  9. アプリケーション ID を取得します。Get the application ID.

    $azureAdApplication 
    

    出力のアプリケーション ID (applicationID) をメモします。Note down the application ID (applicationID) from the output.

これらの手順で、次の 4 つの値がわかりました。You should have following four values from these steps:

  • テナント IDTenant ID
  • サブスクリプション IDSubscription ID
  • アプリケーション IDApplication ID
  • パスワード (最初のコマンドで指定)Password (specified in the first command)

チュートリアルWalkthrough

  1. Visual Studio 2012/2013/2015 を使用して、C# .NET コンソール アプリケーションを作成します。Using Visual Studio 2012/2013/2015, create a C# .NET console application.

    1. Visual Studio 2012/2013/2015 を起動します。Launch Visual Studio 2012/2013/2015.
    2. [ファイル] をクリックし、 [新規作成] をポイントして、 [プロジェクト] をクリックします。Click File, point to New, and click Project.
    3. [テンプレート] を展開し、 [Visual C#] を選択します。Expand Templates, and select Visual C#. このチュートリアルでは C# を使用しますが、どの .NET 言語でも使用できます。In this walkthrough, you use C#, but you can use any .NET language.
    4. 右側にあるプロジェクトの種類の一覧から [コンソール アプリケーション] を選択します。Select Console Application from the list of project types on the right.
    5. [名前] に「 DataFactoryAPITestApp 」と入力します。Enter DataFactoryAPITestApp for the Name.
    6. [場所] で [C:\ADFGetStarted] を選択します。Select C:\ADFGetStarted for the Location.
    7. [OK] をクリックしてプロジェクトを作成します。Click OK to create the project.
  2. [ツール] をクリックし、 [NuGet パッケージ マネージャー] をポイントして、 [パッケージ マネージャー コンソール] をクリックします。Click Tools, point to NuGet Package Manager, and click Package Manager Console.

  3. パッケージ マネージャー コンソールで、次の手順を実行します。In the Package Manager Console, do the following steps:

    1. 次のコマンドを実行して、Data Factory パッケージをインストールします: Install-Package Microsoft.Azure.Management.DataFactoriesRun the following command to install Data Factory package: Install-Package Microsoft.Azure.Management.DataFactories
    2. 次のコマンドを実行して、Azure Active Directory パッケージをインストールします (コードで Active Directory API を使用します): Install-Package Microsoft.IdentityModel.Clients.ActiveDirectory -Version 2.19.208020213Run the following command to install Azure Active Directory package (you use Active Directory API in the code): Install-Package Microsoft.IdentityModel.Clients.ActiveDirectory -Version 2.19.208020213
  4. 次の appSetttings セクションを App.config ファイルに追加します。Add the following appSetttings section to the App.config file. これらの設定は、ヘルパー メソッド GetAuthorizationHeader によって使用されます。These settings are used by the helper method: GetAuthorizationHeader.

    <Application ID><Password><Subscription ID><tenant ID> の値を実際の値に置き換えます。Replace values for <Application ID>, <Password>, <Subscription ID>, and <tenant ID> with your own values.

    <?xml version="1.0" encoding="utf-8" ?>
    <configuration>
        <appSettings>
            <add key="ActiveDirectoryEndpoint" value="https://login.microsoftonline.com/" />
            <add key="ResourceManagerEndpoint" value="https://management.azure.com/" />
            <add key="WindowsManagementUri" value="https://management.core.windows.net/" />
    
            <add key="ApplicationId" value="your application ID" />
            <add key="Password" value="Password you used while creating the AAD application" />
            <add key="SubscriptionId" value= "Subscription ID" />
            <add key="ActiveDirectoryTenantId" value="Tenant ID" />
        </appSettings>
    </configuration>
    
  5. 次の using ステートメントをプロジェクト内のソース ファイル (Program.cs) に追加します。Add the following using statements to the source file (Program.cs) in the project.

    using System.Configuration;
    using System.Collections.ObjectModel;
    using System.Threading;
    using System.Threading.Tasks;
    
    using Microsoft.Azure;
    using Microsoft.Azure.Management.DataFactories;
    using Microsoft.Azure.Management.DataFactories.Models;
    using Microsoft.Azure.Management.DataFactories.Common.Models;
    
    using Microsoft.IdentityModel.Clients.ActiveDirectory;
    
    
  6. DataPipelineManagementClient クラスのインスタンスを作成する次のコードを Main メソッドに追加します。Add the following code that creates an instance of DataPipelineManagementClient class to the Main method. このオブジェクトを使用して、データ ファクトリ、リンクされたサービス、入力データセットと出力データセット、およびパイプラインを作成します。You use this object to create a data factory, a linked service, input and output datasets, and a pipeline. また、実行時にデータセットのスライスを監視する際にもこのオブジェクトを使用します。You also use this object to monitor slices of a dataset at runtime.

    // create data factory management client
    string resourceGroupName = "ADFTutorialResourceGroup";
    string dataFactoryName = "APITutorialFactory";
    
    TokenCloudCredentials aadTokenCredentials = new TokenCloudCredentials(
            ConfigurationManager.AppSettings["SubscriptionId"],
            GetAuthorizationHeader().Result);
    
    Uri resourceManagerUri = new Uri(ConfigurationManager.AppSettings["ResourceManagerEndpoint"]);
    
    DataFactoryManagementClient client = new DataFactoryManagementClient(aadTokenCredentials, resourceManagerUri);
    

    重要

    resourceGroupName の値を、使用する Azure リソース グループの名前で置き換えます。Replace the value of resourceGroupName with the name of your Azure resource group.

    データ ファクトリの名前 (dataFactoryName) が一意になるように更新します。Update name of the data factory (dataFactoryName) to be unique. データ ファクトリの名前はグローバルに一意にする必要があります。Name of the data factory must be globally unique. Data Factory アーティファクトの名前付け規則については、 Data Factory - 名前付け規則 に関するトピックを参照してください。See Data Factory - Naming Rules topic for naming rules for Data Factory artifacts.

  7. データ ファクトリを作成する次のコードを Main メソッドに追加します。Add the following code that creates a data factory to the Main method.

    // create a data factory
    Console.WriteLine("Creating a data factory");
    client.DataFactories.CreateOrUpdate(resourceGroupName,
        new DataFactoryCreateOrUpdateParameters()
        {
            DataFactory = new DataFactory()
            {
                Name = dataFactoryName,
                Location = "westus",
                Properties = new DataFactoryProperties()
            }
        }
    );
    

    データ ファクトリは、1 つまたは複数のパイプラインを持つことができます。A data factory can have one or more pipelines. パイプラインには、1 つまたは複数のアクティビティを含めることができます。A pipeline can have one or more activities in it. たとえば、コピー元からコピー先のデータ ストアにデータをコピーするコピー アクティビティや、Hive スクリプトを実行し、入力データを変換して出力データを生成する HDInsight Hive アクティビティなどを含めることができます。For example, a Copy Activity to copy data from a source to a destination data store and a HDInsight Hive activity to run a Hive script to transform input data to product output data. それでは、この手順でデータ ファクトリの作成から始めましょう。Let's start with creating the data factory in this step.

  8. Azure Storage のリンクされたサービスを作成する次のコードを Main メソッドに追加します。Add the following code that creates an Azure Storage linked service to the Main method.

    重要

    storageaccountnameaccountkey を Azure ストレージ アカウントの名前とキーで置き換えます。Replace storageaccountname and accountkey with name and key of your Azure Storage account.

    // create a linked service for input data store: Azure Storage
    Console.WriteLine("Creating Azure Storage linked service");
    client.LinkedServices.CreateOrUpdate(resourceGroupName, dataFactoryName,
        new LinkedServiceCreateOrUpdateParameters()
        {
            LinkedService = new LinkedService()
            {
                Name = "AzureStorageLinkedService",
                Properties = new LinkedServiceProperties
                (
                    new AzureStorageLinkedService("DefaultEndpointsProtocol=https;AccountName=<storageaccountname>;AccountKey=<accountkey>")
                )
            }
        }
    );
    

    データ ストアおよびコンピューティング サービスをデータ ファクトリにリンクするには、リンクされたサービスをデータ ファクトリに作成します。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.

  9. Azure SQL のリンクされたサービスを作成する次のコードを Main メソッドに追加します。Add the following code that creates an Azure SQL linked service to the Main method.

    重要

    servernamedatabasenameusernamepassword を Azure SQL のサーバー名、データベース名、ユーザー名、パスワードで置き換えます。Replace servername, databasename, username, and password with names of your Azure SQL server, database, user, and password.

    // create a linked service for output data store: Azure SQL Database
    Console.WriteLine("Creating Azure SQL Database linked service");
    client.LinkedServices.CreateOrUpdate(resourceGroupName, dataFactoryName,
        new LinkedServiceCreateOrUpdateParameters()
        {
            LinkedService = new LinkedService()
            {
                Name = "AzureSqlLinkedService",
                Properties = new LinkedServiceProperties
                (
                    new AzureSqlDatabaseLinkedService("Data Source=tcp:<servername>.database.windows.net,1433;Initial Catalog=<databasename>;User ID=<username>;Password=<password>;Integrated Security=False;Encrypt=True;Connect Timeout=30")
                )
            }
        }
    );
    

    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.

  10. 入力データセットと出力データセットを作成する次のコードを Main メソッドに追加します。Add the following code that creates input and output datasets to the Main method.

    // create input and output datasets
    Console.WriteLine("Creating input and output datasets");
    string Dataset_Source = "InputDataset";
    string Dataset_Destination = "OutputDataset";
    
    Console.WriteLine("Creating input dataset of type: Azure Blob");
    client.Datasets.CreateOrUpdate(resourceGroupName, dataFactoryName,
    
    new DatasetCreateOrUpdateParameters()
    {
        Dataset = new Dataset()
        {
            Name = Dataset_Source,
            Properties = new DatasetProperties()
            {
                Structure = new List<DataElement>()
                {
                    new DataElement() { Name = "FirstName", Type = "String" },
                    new DataElement() { Name = "LastName", Type = "String" }
                },
                LinkedServiceName = "AzureStorageLinkedService",
                TypeProperties = new AzureBlobDataset()
                {
                    FolderPath = "adftutorial/",
                    FileName = "emp.txt"
                },
                External = true,
                Availability = new Availability()
                {
                    Frequency = SchedulePeriod.Hour,
                    Interval = 1,
                },
    
                Policy = new Policy()
                {
                    Validation = new ValidationPolicy()
                    {
                        MinimumRows = 1
                    }
                }
            }
        }
    });
    
    Console.WriteLine("Creating output dataset of type: Azure SQL");
    client.Datasets.CreateOrUpdate(resourceGroupName, dataFactoryName,
        new DatasetCreateOrUpdateParameters()
        {
            Dataset = new Dataset()
            {
                Name = Dataset_Destination,
                Properties = new DatasetProperties()
                {
                    Structure = new List<DataElement>()
                    {
                        new DataElement() { Name = "FirstName", Type = "String" },
                        new DataElement() { Name = "LastName", Type = "String" }
                    },
                    LinkedServiceName = "AzureSqlLinkedService",
                    TypeProperties = new AzureSqlTableDataset()
                    {
                        TableName = "emp"
                    },
                    Availability = new Availability()
                    {
                        Frequency = SchedulePeriod.Hour,
                        Interval = 1,
                    },
                }
            }
        });
    

    前の手順では、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. この手順では、InputDataset と OutputDataset という名前の 2 つのデータセットを定義します。これらはそれぞれ、AzureStorageLinkedService と AzureSqlLinkedService が参照するデータ ストアに格納されている入力データと出力データを表します。In this step, you define two datasets named InputDataset and OutputDataset 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 データセット (InputDataset) は、コンテナーと、入力データが含まれているフォルダーを指定します。And, the input blob dataset (InputDataset) 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.

    この手順では、BLOB ファイル (emp.txt) を参照する InputDataset という名前のデータセットを作成します。このファイルは、リンクされたサービス AzureStorageLinkedService が表す Azure Storage 内の BLOB コンテナー (adftutorial) のルート フォルダーにあります。In this step, you create a dataset named InputDataset 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.

    この手順では、 OutputDatasetという名前の出力データセットを作成します。In this step, you create an output dataset named OutputDataset. このデータセットは、 AzureSqlLinkedServiceで表される Azure SQL データベース内の SQL テーブルをポイントします。This dataset points to a SQL table in the Azure SQL database represented by AzureSqlLinkedService.

  11. パイプラインを作成してアクティブにする次のコードを Main メソッドに追加します。Add the following code that creates and activates a pipeline to the Main method. この手順では、InputDataset を入力、OutputDataset を出力として使用するコピー アクティビティを備えたパイプラインを作成します。In this step, you create a pipeline with a copy activity that uses InputDataset as an input and OutputDataset as an output.

    // create a pipeline
    Console.WriteLine("Creating a pipeline");
    DateTime PipelineActivePeriodStartTime = new DateTime(2017, 5, 11, 0, 0, 0, 0, DateTimeKind.Utc);
    DateTime PipelineActivePeriodEndTime = new DateTime(2017, 5, 12, 0, 0, 0, 0, DateTimeKind.Utc);
    string PipelineName = "ADFTutorialPipeline";
    
    client.Pipelines.CreateOrUpdate(resourceGroupName, dataFactoryName,
        new PipelineCreateOrUpdateParameters()
        {
            Pipeline = new Pipeline()
            {
                Name = PipelineName,
                Properties = new PipelineProperties()
                {
                    Description = "Demo Pipeline for data transfer between blobs",
    
                    // Initial value for pipeline's active period. With this, you won't need to set slice status
                    Start = PipelineActivePeriodStartTime,
                    End = PipelineActivePeriodEndTime,
    
                    Activities = new List<Activity>()
                    {
                        new Activity()
                        {
                            Name = "BlobToAzureSql",
                            Inputs = new List<ActivityInput>()
                            {
                                new ActivityInput() {
                                    Name = Dataset_Source
                                }
                            },
                            Outputs = new List<ActivityOutput>()
                            {
                                new ActivityOutput()
                                {
                                    Name = Dataset_Destination
                                }
                            },
                            TypeProperties = new CopyActivity()
                            {
                                Source = new BlobSource(),
                                Sink = new BlobSink()
                                {
                                    WriteBatchSize = 10000,
                                    WriteBatchTimeout = TimeSpan.FromMinutes(10)
                                }
                            }
                        }
                    }
                }
            }
        });
    

    以下の点に注意してください。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.
    • アクティビティの入力を InputDataset に設定し、出力を OutputDataset に設定します。Input for the activity is set to InputDataset and output for the activity is set to OutputDataset.
    • 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.

    現在、スケジュールは出力データセットによって開始されます。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.

  12. 次のコードを Main メソッドに追加して、出力データセットのデータ スライスのステータスを取得します。Add the following code to the Main method to get the status of a data slice of the output dataset. この例で予想されるスライスのみが存在します。There is only slice expected in this sample.

    // Pulling status within a timeout threshold
    DateTime start = DateTime.Now;
    bool done = false;
    
    while (DateTime.Now - start < TimeSpan.FromMinutes(5) && !done)
    {
        Console.WriteLine("Pulling the slice status");        
        // wait before the next status check
        Thread.Sleep(1000 * 12);
    
        var datalistResponse = client.DataSlices.List(resourceGroupName, dataFactoryName, Dataset_Destination,
            new DataSliceListParameters()
            {
                DataSliceRangeStartTime = PipelineActivePeriodStartTime.ConvertToISO8601DateTimeString(),
                DataSliceRangeEndTime = PipelineActivePeriodEndTime.ConvertToISO8601DateTimeString()
            });
    
        foreach (DataSlice slice in datalistResponse.DataSlices)
        {
            if (slice.State == DataSliceState.Failed || slice.State == DataSliceState.Ready)
            {
                Console.WriteLine("Slice execution is done with status: {0}", slice.State);
                done = true;
                break;
            }
            else
            {
                Console.WriteLine("Slice status is: {0}", slice.State);
            }
        }
    }
    
  13. データ スライスの実行の詳細を取得する次のコードを Main メソッドに追加します。Add the following code to get run details for a data slice to the Main method.

    Console.WriteLine("Getting run details of a data slice");
    
    // give it a few minutes for the output slice to be ready
    Console.WriteLine("\nGive it a few minutes for the output slice to be ready and press any key.");
    Console.ReadKey();
    
    var datasliceRunListResponse = client.DataSliceRuns.List(
            resourceGroupName,
            dataFactoryName,
            Dataset_Destination,
            new DataSliceRunListParameters()
            {
                DataSliceStartTime = PipelineActivePeriodStartTime.ConvertToISO8601DateTimeString()
            }
        );
    
    foreach (DataSliceRun run in datasliceRunListResponse.DataSliceRuns)
    {
        Console.WriteLine("Status: \t\t{0}", run.Status);
        Console.WriteLine("DataSliceStart: \t{0}", run.DataSliceStart);
        Console.WriteLine("DataSliceEnd: \t\t{0}", run.DataSliceEnd);
        Console.WriteLine("ActivityId: \t\t{0}", run.ActivityName);
        Console.WriteLine("ProcessingStartTime: \t{0}", run.ProcessingStartTime);
        Console.WriteLine("ProcessingEndTime: \t{0}", run.ProcessingEndTime);
        Console.WriteLine("ErrorMessage: \t{0}", run.ErrorMessage);
    }
    
    Console.WriteLine("\nPress any key to exit.");
    Console.ReadKey();
    
  14. Main メソッドで使用される次のヘルパー メソッドを Program クラスに追加します。Add the following helper method used by the Main method to the Program class.

    注意

    次のコードをコピーして貼り付ける際は、コピーしたコードが Main メソッドと同じレベルになるようにしてください。When you copy and paste the following code, make sure that the copied code is at the same level as the Main method.

    public static async Task<string> GetAuthorizationHeader()
    {
        AuthenticationContext context = new AuthenticationContext(ConfigurationManager.AppSettings["ActiveDirectoryEndpoint"] + ConfigurationManager.AppSettings["ActiveDirectoryTenantId"]);
        ClientCredential credential = new ClientCredential(
            ConfigurationManager.AppSettings["ApplicationId"],
            ConfigurationManager.AppSettings["Password"]);
        AuthenticationResult result = await context.AcquireTokenAsync(
            resource: ConfigurationManager.AppSettings["WindowsManagementUri"],
            clientCredential: credential);
    
        if (result != null)
            return result.AccessToken;
    
        throw new InvalidOperationException("Failed to acquire token");
    }
    
  15. ソリューション エクスプローラーで、プロジェクト (DataFactoryAPITestApp) を展開し、 [参照] を右クリックして [参照の追加] をクリックします。In the Solution Explorer, expand the project (DataFactoryAPITestApp), right-click References, and click Add Reference. "System.Configuration" アセンブリのチェック ボックスをオンにします。Select check box for System.Configuration assembly. [OK] をクリックします。and click OK.

  16. コンソール アプリケーションをビルドします。Build the console application. メニューから [ビルド] をクリックし、 [ソリューションのビルド] をクリックします。Click Build on the menu and click Build Solution.

  17. Azure BLOB ストレージ内の adftutorial コンテナーに少なくとも 1 つのファイルが存在することを確認します。Confirm that there is at least one file in the adftutorial container in your Azure blob storage. 存在しない場合は、以下の内容を記述した Emp.txt ファイルをメモ帳で作成し、adftutorial コンテナーにアップロードします。If not, create Emp.txt file in Notepad with the following content and upload it to the adftutorial container.

    John, Doe
    Jane, Doe
    
  18. メニューの [デバッグ] -> [デバッグの開始] の順にクリックして、サンプルを実行します。Run the sample by clicking Debug -> Start Debugging on the menu. [Getting run details of a data slice (データ スライスの実行の詳細を取得中)] が表示されている場合は、数分待機して、Enter を押します。When you see the Getting run details of a data slice, wait for a few minutes, and press ENTER.

  19. Azure ポータルを使用して、データ ファクトリの APITutorialFactory が次のアーティファクトで作成されることを確認します。Use the Azure portal to verify that the data factory APITutorialFactory is created with the following artifacts:

    • リンクされたサービス:LinkedService_AzureStorageLinked service: LinkedService_AzureStorage
    • データセット:InputDatasetOutputDatasetDataset: InputDataset and OutputDataset.
    • パイプライン:PipelineBlobSamplePipeline: PipelineBlobSample
  20. 指定した Azure SQL データベースの emp テーブルに 2 つの従業員レコードが作成されることを確認します。Verify that the two employee records are created in the emp table in the specified Azure SQL database.

次の手順Next steps

Data Factory の .NET API に関する完全なドキュメントについては、Data Factory .NET API リファレンスを参照してください。For complete documentation on .NET API for Data Factory, see Data Factory .NET API Reference.

このチュートリアルでは、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.