Início Rápido: Criar um data factory e um pipeline usando o SDK do .NETQuickstart: Create a data factory and pipeline using .NET SDK

APLICA-SE A: Azure Data Factory Azure Synapse Analytics

Este guia de início rápido descreve como usar o SDK do .NET para criar um Azure Data Factory.This quickstart describes how to use .NET SDK to create an Azure Data Factory. O pipeline que você criar nesse data factory copia dados de uma pasta para outra em um Armazenamento de Blobs do Azure.The pipeline you create in this data factory copies data from one folder to another folder in an Azure blob storage. Para obter um tutorial sobre como transformar dados usando o Azure Data Factory, confira Tutorial: Transformar dados usando o Spark.For a tutorial on how to transform data using Azure Data Factory, see Tutorial: Transform data using Spark.

Observação

Este artigo não fornece uma introdução detalhada do serviço Data Factory.This article does not provide a detailed introduction of the Data Factory service. Para obter uma introdução do serviço do Azure Data Factory, consulte Introdução ao Azure Data Factory.For an introduction to the Azure Data Factory service, see Introduction to Azure Data Factory.

Pré-requisitosPrerequisites

Assinatura do AzureAzure subscription

Se você não tiver uma assinatura do Azure, crie uma conta gratuita antes de começar.If you don't have an Azure subscription, create a free account before you begin.

Funções do AzureAzure roles

Para criar instâncias de Data Factory, a conta de usuário usada para entrar no Azure deve ser um membro das funções colaborador ou proprietário, ou um administrador da assinatura do Azure.To create Data Factory instances, the user account that you use to sign in to Azure must be a member of the contributor or owner role, or an administrator of the Azure subscription. Para exibir as permissões que você tem na assinatura, acesse o portal do Azure, selecione seu nome de usuário no canto superior direito e selecione o ícone “ ... ” para obter mais opções; em seguida, selecione Minhas permissões.To view the permissions that you have in the subscription, go to the Azure portal, select your username in the upper-right corner, select "..." icon for more options, and then select My permissions. Se tiver acesso a várias assinaturas, selecione a que for adequada.If you have access to multiple subscriptions, select the appropriate subscription.

Para criar e gerenciar recursos filho para o Data Factory – incluindo conjuntos de dados, serviços vinculados, pipelines, gatilhos e runtimes de integração –, os requisitos a seguir são aplicáveis:To create and manage child resources for Data Factory - including datasets, linked services, pipelines, triggers, and integration runtimes - the following requirements are applicable:

  • Para criar e gerenciar recursos filho no portal do Azure, você precisa pertencer à função Colaborador do Data Factory no nível do grupo de recursos ou superior.To create and manage child resources in the Azure portal, you must belong to the Data Factory Contributor role at the resource group level or above.
  • Para criar e gerenciar recursos filho com o PowerShell ou o SDK, a função de colaborador no nível do recurso ou superior é suficiente.To create and manage child resources with PowerShell or the SDK, the contributor role at the resource level or above is sufficient.

Para obter instruções de exemplo sobre como adicionar um usuário a uma função, confira o artigo Adicionar funções.For sample instructions about how to add a user to a role, see the Add roles article.

Para obter mais informações, confira os seguintes artigos:For more info, see the following articles:

Conta de Armazenamento do AzureAzure Storage account

Use uma conta de Armazenamento do Azure de uso geral (especificamente o Armazenamento de Blobs) como armazenamentos de dados de origem e destino neste início rápido.You use a general-purpose Azure Storage account (specifically Blob storage) as both source and destination data stores in this quickstart. Se você não tiver uma conta de Armazenamento do Azure de uso geral, confira Criar uma conta de armazenamento para criar uma.If you don't have a general-purpose Azure Storage account, see Create a storage account to create one.

Obter o nome da conta de armazenamentoGet the storage account name

Você precisará do nome da sua conta de Armazenamento do Azure para este início rápido.You need the name of your Azure Storage account for this quickstart. O procedimento a seguir fornece as etapas para obter o nome da sua conta de armazenamento:The following procedure provides steps to get the name of your storage account:

  1. Em um navegador da Web, vá para o portal do Azure e entre usando seu nome de usuário e senha do Azure.In a web browser, go to the Azure portal and sign in using your Azure username and password.
  2. No menu do portal do Azure, selecione Todos os serviços, em seguida, selecione Armazenamento > Contas de armazenamento.From the Azure portal menu, select All services, then select Storage > Storage accounts. Você também pode pesquisar e selecionar Contas de armazenamento de qualquer página.You can also search for and select Storage accounts from any page.
  3. Na página Contas de armazenamento, filtre pela sua conta de armazenamento (se necessário) e selecione a sua conta de armazenamento.In the Storage accounts page, filter for your storage account (if needed), and then select your storage account.

Você também pode pesquisar e selecionar Contas de armazenamento de qualquer página.You can also search for and select Storage accounts from any page.

Criar um contêiner de blobCreate a blob container

Nesta seção, você cria um contêiner de blobs chamado adftutorial no armazenamento de Blobs do Azure.In this section, you create a blob container named adftutorial in Azure Blob storage.

  1. Na página da conta de armazenamento, selecione Visão geral > Contêineres.From the storage account page, select Overview > Containers.

  2. Na barra de ferramentas da página de <Account name> - Contêineres, selecione Contêiner.On the <Account name> - Containers page's toolbar, select Container.

  3. Na caixa de diálogo Novo contêiner, insira adftutorial como o nome e selecione OK.In the New container dialog box, enter adftutorial for the name, and then select OK. A página de <Account name> - Contêineres está atualizada para incluir o adftutorial na lista de contêineres.The <Account name> - Containers page is updated to include adftutorial in the list of containers.

    Lista de contêineres

Adicionar uma pasta de entrada e um arquivo ao contêiner de blobAdd an input folder and file for the blob container

Nesta seção, você pode adicionar uma pasta chamada entrada ao contêiner que acabou de criar e, em seguida, carregar um arquivo de exemplo na pasta de entrada.In this section, you create a folder named input in the container you created, and then upload a sample file to the input folder. Antes de começar, abra um editor de texto como o Bloco de Notas e crie um arquivo chamado emp.txt com o seguinte conteúdo:Before you begin, open a text editor such as Notepad, and create a file named emp.txt with the following content:

John, Doe
Jane, Doe

Salve o arquivo na pasta C:\ADFv2QuickStartPSH.Save the file in the C:\ADFv2QuickStartPSH folder. (Se a pasta ainda não existir, crie-a.) Então volte ao portal do Azure e siga estas etapas:(If the folder doesn't already exist, create it.) Then return to the Azure portal and follow these steps:

  1. Na página de <Account name> - Contêineres em que você parou, selecione o adftutorial da lista de contêineres atualizada.In the <Account name> - Containers page where you left off, select adftutorial from the updated list of containers.

    1. Se você fechou a janela ou foi para outra página, entre no portal do Azure novamente.If you closed the window or went to another page, sign in to the Azure portal again.
    2. No menu do portal do Azure, selecione Todos os serviços, em seguida, selecione Armazenamento > Contas de armazenamento.From the Azure portal menu, select All services, then select Storage > Storage accounts. Você também pode pesquisar e selecionar Contas de armazenamento de qualquer página.You can also search for and select Storage accounts from any page.
    3. Selecione a sua conta de armazenamento e, em seguida, Contêineres > adftutorial.Select your storage account, and then select Containers > adftutorial.
  2. Na barra de ferramentas da página de contêiner do adftutorial, selecione Carregar.On the adftutorial container page's toolbar, select Upload.

  3. Na página Carregar blob, selecione a caixa Arquivos e, em seguida, navegue até o arquivo emp.txt e selecione-o.In the Upload blob page, select the Files box, and then browse to and select the emp.txt file.

  4. Expanda o título Avançado.Expand the Advanced heading. A página agora será exibida como mostrado:The page now displays as shown:

    Selecione o link Avançado

  5. Na caixa Carregar para a pasta, insira entrada.In the Upload to folder box, enter input.

  6. Selecione o botão Carregar.Select the Upload button. O arquivo emp.txt e o status do carregamento devem estar na lista.You should see the emp.txt file and the status of the upload in the list.

  7. Selecione o ícone Fechar (um X) para fechar a página Carregar blob.Select the Close icon (an X) to close the Upload blob page.

Mantenha a página do contêiner adftutorial aberta.Keep the adftutorial container page open. Você a usa para verificar a saída no final do guia de início rápido.You use it to verify the output at the end of this quickstart.

Visual StudioVisual Studio

As instruções passo a passo neste artigo usam o Visual Studio 2019.The walkthrough in this article uses Visual Studio 2019. Os procedimentos para Visual Studio 2013, 2015 ou 2017 são levemente diferentes.The procedures for Visual Studio 2013, 2015, or 2017 differ slightly.

SDK do Azure .NETAzure .NET SDK

Baixe e instale o SDK .NET do Azure no seu computador.Download and install Azure .NET SDK on your machine.

Criar um aplicativo no Azure Active DirectoryCreate an application in Azure Active Directory

Das seções em Como usar o portal para criar um aplicativo do Azure AD e uma entidade de serviço que possa acessar recursos, siga as instruções para executar estas tarefas:From the sections in How to: Use the portal to create an Azure AD application and service principal that can access resources, follow the instructions to do these tasks:

  1. Em Criar um aplicativo no Azure Active Directory, crie um aplicativo que represente o aplicativo .NET que você está criando neste tutorial.In Create an Azure Active Directory application, create an application that represents the .NET application you are creating in this tutorial. Para a URL de logon, você pode fornecer uma URL fictícia, como mostrado no artigo (https://contoso.org/exampleapp).For the sign-on URL, you can provide a dummy URL as shown in the article (https://contoso.org/exampleapp).
  2. Em Obter valores para entrar, obtenha a ID do aplicativo e a ID do locatário e anote esses valores que você usará posteriormente neste tutorial.In Get values for signing in, get the application ID and tenant ID, and note down these values that you use later in this tutorial.
  3. Em Certificados e segredos, obtenha a chave de autenticação e anote esse valor que você usa posteriormente neste tutorial.In Certificates and secrets, get the authentication key, and note down this value that you use later in this tutorial.
  4. Em Atribuir o aplicativo a uma função, atribua o aplicativo à função Colaborador no nível da assinatura para que o aplicativo possa criar os data factories na assinatura.In Assign the application to a role, assign the application to the Contributor role at the subscription level so that the application can create data factories in the subscription.

Criar um projeto do Visual StudioCreate a Visual Studio project

Em seguida, crie um aplicativo de console do .NET em C# no Visual Studio:Next, create a C# .NET console application in Visual Studio:

  1. Inicie o Visual Studio.Launch Visual Studio.
  2. Na janela Iniciar, selecione Criar um novo projeto > Aplicativo de Console (.NET Framework) .In the Start window, select Create a new project > Console App (.NET Framework). O .NET versão 4.5.2 ou superior é necessário..NET version 4.5.2 or above is required.
  3. Em Nome do projeto, insira ADFv2QuickStart.In Project name, enter ADFv2QuickStart.
  4. Selecione Criar para criar o cluster.Select Create to create the project.

Instalar os pacotes NuGetInstall NuGet packages

  1. Selecione Ferramentas > Gerenciador de Pacotes NuGet > Console do Gerenciador de Pacotes.Select Tools > NuGet Package Manager > Package Manager Console.

  2. No painel Console do Gerenciador de Pacotes, execute os comandos a seguir para instalar os pacotes.In the Package Manager Console pane, run the following commands to install packages. Para obter mais informações, confira o pacote do NuGet Microsoft.Azure.Management.DataFactory.For more information, see the Microsoft.Azure.Management.DataFactory nuget package.

    Install-Package Microsoft.Azure.Management.DataFactory
    Install-Package Microsoft.Azure.Management.ResourceManager -IncludePrerelease
    Install-Package Microsoft.IdentityModel.Clients.ActiveDirectory
    

Criar um cliente data factoryCreate a data factory client

  1. Abra Program.cs e inclua as instruções a seguir para adicionar referências aos namespaces.Open Program.cs, include the following statements to add references to namespaces.

    using System;
    using System.Collections.Generic;
    using System.Linq;
    using Microsoft.Rest;
    using Microsoft.Rest.Serialization;
    using Microsoft.Azure.Management.ResourceManager;
    using Microsoft.Azure.Management.DataFactory;
    using Microsoft.Azure.Management.DataFactory.Models;
    using Microsoft.IdentityModel.Clients.ActiveDirectory;
    
  2. Adicione o código a seguir, que define as variáveis, ao método Main.Add the following code to the Main method that sets the variables. Substitua os espaços reservados pelos seus próprios valores.Replace the placeholders with your own values. Para obter uma lista de regiões do Azure no qual o Data Factory está disponível no momento, selecione as regiões que relevantes para você na página a seguir e, em seguida, expanda Análise para localizar Data Factory: Produtos disponíveis por região.For a list of Azure regions in which Data Factory is currently available, select the regions that interest you on the following page, and then expand Analytics to locate Data Factory: Products available by region. Os armazenamentos de dados (Armazenamento do Azure, Banco de Dados SQL do Azure entre outros) e serviços de computação (HDInsight entre outros) usados pelo data factory podem estar em outras regiões.The data stores (Azure Storage, Azure SQL Database, and more) and computes (HDInsight and others) used by data factory can be in other regions.

    // Set variables
    string tenantID = "<your tenant ID>";
    string applicationId = "<your application ID>";
    string authenticationKey = "<your authentication key for the application>";
    string subscriptionId = "<your subscription ID where the data factory resides>";
    string resourceGroup = "<your resource group where the data factory resides>";
    string region = "<the location of your resource group>";
    string dataFactoryName = 
        "<specify the name of data factory to create. It must be globally unique.>";
    string storageAccount = "<your storage account name to copy data>";
    string storageKey = "<your storage account key>";
    // specify the container and input folder from which all files 
    // need to be copied to the output folder. 
    string inputBlobPath =
        "<path to existing blob(s) to copy data from, e.g. containername/inputdir>";
    //specify the contains and output folder where the files are copied
    string outputBlobPath =
        "<the blob path to copy data to, e.g. containername/outputdir>";
    
    // name of the Azure Storage linked service, blob dataset, and the pipeline
    string storageLinkedServiceName = "AzureStorageLinkedService";
    string blobDatasetName = "BlobDataset";
    string pipelineName = "Adfv2QuickStartPipeline";
    
  3. Adicione o código a seguir, que cria uma instância da classe DataFactoryManagementClient, ao método Main.Add the following code to the Main method that creates an instance of DataFactoryManagementClient class. Você usa esse objeto para criar um data factory, um serviço vinculado, conjuntos de dados e um pipeline.You use this object to create a data factory, a linked service, datasets, and a pipeline. Você também pode usar esse objeto para monitorar os detalhes da execução de pipeline.You also use this object to monitor the pipeline run details.

    // Authenticate and create a data factory management client
    var context = new AuthenticationContext("https://login.windows.net/" + tenantID);
    ClientCredential cc = new ClientCredential(applicationId, authenticationKey);
    AuthenticationResult result = context.AcquireTokenAsync(
        "https://management.azure.com/", cc).Result;
    ServiceClientCredentials cred = new TokenCredentials(result.AccessToken);
    var client = new DataFactoryManagementClient(cred) {
        SubscriptionId = subscriptionId };
    

Criar uma data factoryCreate a data factory

Adicione o código a seguir, que cria um data factory, ao método Main.Add the following code to the Main method that creates a data factory.

// Create a data factory
Console.WriteLine("Creating data factory " + dataFactoryName + "...");
Factory dataFactory = new Factory
{
    Location = region,
    Identity = new FactoryIdentity()
};
client.Factories.CreateOrUpdate(resourceGroup, dataFactoryName, dataFactory);
Console.WriteLine(
    SafeJsonConvert.SerializeObject(dataFactory, client.SerializationSettings));

while (client.Factories.Get(resourceGroup, dataFactoryName).ProvisioningState ==
       "PendingCreation")
{
    System.Threading.Thread.Sleep(1000);
}

Criar um serviço vinculadoCreate a linked service

Adicione o código a seguir, que cria um serviço vinculado do Armazenamento do Azure, ao método Main.Add the following code to the Main method that creates an Azure Storage linked service.

Os serviços vinculados são criados em um data factory para vincular seus armazenamentos de dados e serviços de computação ao data factory.You create linked services in a data factory to link your data stores and compute services to the data factory. Neste Início Rápido, você só precisa criar um serviço vinculado do Armazenamento do Azure para a origem da cópia e o repositório de coletor. Esse serviço chama-se "AzureStorageLinkedService" no exemplo.In this Quickstart, you only need to create one Azure Storage linked service for both the copy source and the sink store; it's named "AzureStorageLinkedService" in the sample.

// Create an Azure Storage linked service
Console.WriteLine("Creating linked service " + storageLinkedServiceName + "...");

LinkedServiceResource storageLinkedService = new LinkedServiceResource(
    new AzureStorageLinkedService
    {
        ConnectionString = new SecureString(
            "DefaultEndpointsProtocol=https;AccountName=" + storageAccount +
            ";AccountKey=" + storageKey)
    }
);
client.LinkedServices.CreateOrUpdate(
    resourceGroup, dataFactoryName, storageLinkedServiceName, storageLinkedService);
Console.WriteLine(SafeJsonConvert.SerializeObject(
    storageLinkedService, client.SerializationSettings));

Criar um conjunto de dadosCreate a dataset

Adicione o código a seguir, que cria um Conjunto de Dados do Blob do Azure, ao método Main.Add the following code to the Main method that creates an Azure blob dataset.

Você define um conjunto de dados que representa os dados a copiar de uma origem para um coletor.You define a dataset that represents the data to copy from a source to a sink. Neste exemplo, esse conjunto de dados de Blob faz referência ao serviço vinculado do Armazenamento do Azure que você criou na etapa anterior.In this example, this Blob dataset references to the Azure Storage linked service you created in the previous step. O conjunto de dados usa um parâmetro cujo valor é definido em uma atividade que consome o conjunto de dados.The dataset takes a parameter whose value is set in an activity that consumes the dataset. O parâmetro é usado para construir o "folderPath" que aponta para o local em que os dados residem/são armazenados.The parameter is used to construct the "folderPath" pointing to where the data resides/is stored.

// Create an Azure Blob dataset
Console.WriteLine("Creating dataset " + blobDatasetName + "...");
DatasetResource blobDataset = new DatasetResource(
    new AzureBlobDataset
    {
        LinkedServiceName = new LinkedServiceReference
        {
            ReferenceName = storageLinkedServiceName
        },
        FolderPath = new Expression { Value = "@{dataset().path}" },
        Parameters = new Dictionary<string, ParameterSpecification>
        {
            { "path", new ParameterSpecification { Type = ParameterType.String } }
        }
    }
);
client.Datasets.CreateOrUpdate(
    resourceGroup, dataFactoryName, blobDatasetName, blobDataset);
Console.WriteLine(
    SafeJsonConvert.SerializeObject(blobDataset, client.SerializationSettings));

Criar um pipelineCreate a pipeline

Adicione o código a seguir, que cria um pipeline com uma atividade de cópia, ao método Main.Add the following code to the Main method that creates a pipeline with a copy activity.

Neste exemplo, esse pipeline contém uma atividade e leva dois parâmetros: caminho do blob de entrada e caminho do blob de saída.In this example, this pipeline contains one activity and takes two parameters: the input blob path and the output blob path. Os valores para esses parâmetros são definidos quando o pipeline é disparado/executado.The values for these parameters are set when the pipeline is triggered/run. A atividade de cópia refere-se ao mesmo conjunto de dados de blob criado na etapa anterior como entrada e saída.The copy activity refers to the same blob dataset created in the previous step as input and output. Quando o conjunto de dados é usado como um conjunto de dados de entrada, o caminho de entrada é especificado.When the dataset is used as an input dataset, input path is specified. E quando o conjunto de dados é usado como um conjunto de dados de saída, o caminho de saída é especificado.And, when the dataset is used as an output dataset, the output path is specified.

// Create a pipeline with a copy activity
Console.WriteLine("Creating pipeline " + pipelineName + "...");
PipelineResource pipeline = new PipelineResource
{
    Parameters = new Dictionary<string, ParameterSpecification>
    {
        { "inputPath", new ParameterSpecification { Type = ParameterType.String } },
        { "outputPath", new ParameterSpecification { Type = ParameterType.String } }
    },
    Activities = new List<Activity>
    {
        new CopyActivity
        {
            Name = "CopyFromBlobToBlob",
            Inputs = new List<DatasetReference>
            {
                new DatasetReference()
                {
                    ReferenceName = blobDatasetName,
                    Parameters = new Dictionary<string, object>
                    {
                        { "path", "@pipeline().parameters.inputPath" }
                    }
                }
            },
            Outputs = new List<DatasetReference>
            {
                new DatasetReference
                {
                    ReferenceName = blobDatasetName,
                    Parameters = new Dictionary<string, object>
                    {
                        { "path", "@pipeline().parameters.outputPath" }
                    }
                }
            },
            Source = new BlobSource { },
            Sink = new BlobSink { }
        }
    }
};
client.Pipelines.CreateOrUpdate(resourceGroup, dataFactoryName, pipelineName, pipeline);
Console.WriteLine(SafeJsonConvert.SerializeObject(pipeline, client.SerializationSettings));

Criar uma execução de pipelineCreate a pipeline run

Adicione o código a seguir, que dispara uma execução de pipeline, ao método Main.Add the following code to the Main method that triggers a pipeline run.

Esse código também define os valores dos parâmetros inputPath e outputPath especificados no pipeline com os valores reais dos caminhos de blob de origem e de coletor.This code also sets values of the inputPath and outputPath parameters specified in the pipeline with the actual values of the source and sink blob paths.

// Create a pipeline run
Console.WriteLine("Creating pipeline run...");
Dictionary<string, object> parameters = new Dictionary<string, object>
{
    { "inputPath", inputBlobPath },
    { "outputPath", outputBlobPath }
};
CreateRunResponse runResponse = client.Pipelines.CreateRunWithHttpMessagesAsync(
    resourceGroup, dataFactoryName, pipelineName, parameters: parameters
).Result.Body;
Console.WriteLine("Pipeline run ID: " + runResponse.RunId);

Monitorar uma execução de pipelineMonitor a pipeline run

  1. Adicione o código a seguir ao método Main para verificar continuamente o status até que ele termine de copiar os dados.Add the following code to the Main method to continuously check the status until it finishes copying the data.

    // Monitor the pipeline run
    Console.WriteLine("Checking pipeline run status...");
    PipelineRun pipelineRun;
    while (true)
    {
        pipelineRun = client.PipelineRuns.Get(
            resourceGroup, dataFactoryName, runResponse.RunId);
        Console.WriteLine("Status: " + pipelineRun.Status);
        if (pipelineRun.Status == "InProgress" || pipelineRun.Status == "Queued")
            System.Threading.Thread.Sleep(15000);
        else
            break;
    }
    
  2. Adicione o código a seguir ao método Main para recuperar os detalhes de execução da atividade de cópia, como o tamanho dos dados que são lidos ou gravados.Add the following code to the Main method that retrieves copy activity run details, such as the size of the data that's read or written.

    // Check the copy activity run details
    Console.WriteLine("Checking copy activity run details...");
    
    RunFilterParameters filterParams = new RunFilterParameters(
        DateTime.UtcNow.AddMinutes(-10), DateTime.UtcNow.AddMinutes(10));
    ActivityRunsQueryResponse queryResponse = client.ActivityRuns.QueryByPipelineRun(
        resourceGroup, dataFactoryName, runResponse.RunId, filterParams);
    if (pipelineRun.Status == "Succeeded")
        Console.WriteLine(queryResponse.Value.First().Output);
    else
        Console.WriteLine(queryResponse.Value.First().Error);
    Console.WriteLine("\nPress any key to exit...");
    Console.ReadKey();
    

Executar o códigoRun the code

Compile e inicie o aplicativo, então verifique a execução do pipeline.Build and start the application, then verify the pipeline execution.

O console imprime o progresso de criação do data factory, do serviço vinculado, dos conjuntos de dados, do pipeline e da execução de pipeline.The console prints the progress of creating data factory, linked service, datasets, pipeline, and pipeline run. Em seguida, ele verifica o status da execução de pipeline.It then checks the pipeline run status. Aguarde até ver os detalhes da execução da atividade de cópia com o tamanho dos dados de leitura/gravação.Wait until you see the copy activity run details with the size of the read/write data. Em seguida, use ferramentas como o Gerenciador de Armazenamento do Azure para verificar se os blobs são copiados de "inputBlobPath" para "outputBlobPath" conforme você especificou nas variáveis.Then use tools such as Azure Storage Explorer to check the blob(s) is copied to "outputBlobPath" from "inputBlobPath" as you specified in the variables.

Saída de exemploSample output

Creating data factory SPv2Factory0907...
{
  "identity": {
    "type": "SystemAssigned"
  },
  "location": "East US"
}
Creating linked service AzureStorageLinkedService...
{
  "properties": {
    "type": "AzureStorage",
    "typeProperties": {
      "connectionString": {
        "value": "DefaultEndpointsProtocol=https;AccountName=<storageAccountName>;AccountKey=<storageAccountKey>",
        "type": "SecureString"
      }
    }
  }
}
Creating dataset BlobDataset...
{
  "properties": {
    "type": "AzureBlob",
    "typeProperties": {
      "folderPath": {
        "value": "@{dataset().path}",
        "type": "Expression"
      }
    },
    "linkedServiceName": {
      "referenceName": "AzureStorageLinkedService",
      "type": "LinkedServiceReference"
    },
    "parameters": {
      "path": {
        "type": "String"
      }
    }
  }
}
Creating pipeline Adfv2QuickStartPipeline...
{
  "properties": {
    "activities": [
      {
        "type": "Copy",
        "typeProperties": {
          "source": {
            "type": "BlobSource"
          },
          "sink": {
            "type": "BlobSink"
          }
        },
        "inputs": [
          {
            "referenceName": "BlobDataset",
            "parameters": {
              "path": "@pipeline().parameters.inputPath"
            },
            "type": "DatasetReference"
          }
        ],
        "outputs": [
          {
            "referenceName": "BlobDataset",
            "parameters": {
              "path": "@pipeline().parameters.outputPath"
            },
            "type": "DatasetReference"
          }
        ],
        "name": "CopyFromBlobToBlob"
      }
    ],
    "parameters": {
      "inputPath": {
        "type": "String"
      },
      "outputPath": {
        "type": "String"
      }
    }
  }
}
Creating pipeline run...
Pipeline run ID: 308d222d-3858-48b1-9e66-acd921feaa09
Checking pipeline run status...
Status: InProgress
Status: InProgress
Checking copy activity run details...
{
    "dataRead": 331452208,
    "dataWritten": 331452208,
    "copyDuration": 23,
    "throughput": 14073.209,
    "errors": [],
    "effectiveIntegrationRuntime": "DefaultIntegrationRuntime (West US)",
    "usedDataIntegrationUnits": 2,
    "billedDuration": 23
}

Press any key to exit...

Verificar a saídaVerify the output

O pipeline cria automaticamente a pasta de saída no contêiner de blob adftutorial.The pipeline automatically creates the output folder in the adftutorial blob container. Em seguida, ele copia o arquivo emp.txt da pasta de entrada para a pasta de saída.Then, it copies the emp.txt file from the input folder to the output folder.

  1. No portal do Azure, na página do contêiner adftutorial que você interrompeu na seção Adicionar uma pasta de entrada e um arquivo ao contêiner de blobs acima, selecione Atualizar para exibir a pasta de saída.In the Azure portal, on the adftutorial container page that you stopped at in the Add an input folder and file for the blob container section above, select Refresh to see the output folder.
  2. Na lista de pastas, selecione saída.In the folder list, select output.
  3. Confirme que emp.txt tenha sido copiado para a pasta de saída.Confirm that the emp.txt is copied to the output folder.

Limpar os recursosClean up resources

Para excluir programaticamente o data factory, adicione as linhas de código a seguir ao programa:To programmatically delete the data factory, add the following lines of code to the program:

Console.WriteLine("Deleting the data factory");
client.Factories.Delete(resourceGroup, dataFactoryName);

Próximas etapasNext steps

O pipeline nessa amostra copia dados de uma localização para outra em um Armazenamento de Blobs do Azure.The pipeline in this sample copies data from one location to another location in an Azure blob storage. Percorra os tutoriais para saber mais sobre o uso do Data Factory em mais cenários.Go through the tutorials to learn about using Data Factory in more scenarios.