Guida introduttiva: Creare una data factory e una pipeline con .NET SDKQuickstart: Create a data factory and pipeline using .NET SDK

Questa guida introduttiva descrive come usare .NET SDK per creare una data factory di Azure.This quickstart describes how to use .NET SDK to create an Azure data factory. La pipeline creata in questa data factory copia dati da una cartella a un'altra in un archivio BLOB di Azure.The pipeline you create in this data factory copies data from one folder to another folder in an Azure blob storage. Per un'esercitazione su come trasformare dati usando Azure Data Factory, vedere Esercitazione: Trasformare i dati con Spark.For a tutorial on how to transform data using Azure Data Factory, see Tutorial: Transform data using Spark.

Nota

Questo articolo non offre una presentazione dettagliata del servizio Data Factory.This article does not provide a detailed introduction of the Data Factory service. Per un'introduzione al servizio Azure Data Factory, vedere Introduzione ad Azure Data Factory.For an introduction to the Azure Data Factory service, see Introduction to Azure Data Factory.

PrerequisitiPrerequisites

Sottoscrizione di AzureAzure subscription

Se non si ha una sottoscrizione di Azure, creare un account gratuito prima di iniziare.If you don't have an Azure subscription, create a free account before you begin.

Ruoli di AzureAzure roles

Per creare istanze di Data Factory, l'account utente usato per accedere ad Azure deve essere un membro del ruolo collaboratore o proprietario oppure un amministratore della sottoscrizione di 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. Per visualizzare le autorizzazioni disponibili nella sottoscrizione, passare al portale di Azure, selezionare il nome utente nell'angolo in alto a destra, selezionare Altre opzioni (...) e quindi selezionare Autorizzazioni personali.To view the permissions that you have in the subscription, go to the Azure portal, select your username in the upper-right corner, select More options (...), and then select My permissions. Se si accede a più sottoscrizioni, selezionare quella appropriata.If you have access to multiple subscriptions, select the appropriate subscription.

Per creare e gestire le risorse figlio per Data Factory, inclusi i set di dati, i servizi collegati, le pipeline, i trigger e i runtime di integrazione, sono applicabili i requisiti seguenti:To create and manage child resources for Data Factory - including datasets, linked services, pipelines, triggers, and integration runtimes - the following requirements are applicable:

  • Per creare e gestire le risorse figlio nel portale di Azure, è necessario appartenere al ruolo Collaboratore Data Factory a livello di gruppo di risorse o superiore.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.
  • Per creare e gestire le risorse figlio con PowerShell o l'SDK, è sufficiente il ruolo di collaboratore a livello di risorsa o superiore.To create and manage child resources with PowerShell or the SDK, the contributor role at the resource level or above is sufficient.

Per istruzioni di esempio su come aggiungere un utente a un ruolo, vedere l'articolo Aggiungere i ruoli.For sample instructions about how to add a user to a role, see the Add roles article.

Per altre informazioni, vedere gli articoli seguenti:For more info, see the following articles:

Account di archiviazione di AzureAzure storage account

In questa guida introduttiva si usa un account di archiviazione di Azure per utilizzo generico (specificamente, di archiviazione BLOB) come archivio dati sia di origine che di destinazione.You use a general-purpose Azure storage account (specifically Blob storage) as both source and destination data stores in this quickstart. Se non si ha un account di archiviazione di Azure per utilizzo generico, vedere Creare un account di archiviazione per informazioni su come crearne uno.If you don't have a general-purpose Azure storage account, see Create a storage account to create one.

Ottenere il nome dell'account di archiviazioneGet the storage account name

Per questa guida introduttiva è necessario avere il nome dell'account di archiviazione di Azure.You will need the name of your Azure storage account for this quickstart. La procedura seguente illustra i passaggi per recuperare il nome dell'account di archiviazione:The following procedure provides steps to get the name of your storage account:

  1. In un Web browser passare al portale di Azure e accedere usando il nome utente e la password di Azure.In a web browser, go to the Azure portal and sign in using your Azure username and password.
  2. Selezionare Tutti i servizi > Archiviazione > Account di archiviazione.Select All services > Storage > Storage accounts.
  3. Nella pagina Account di archiviazione filtrare gli account di archiviazione, se necessario, quindi selezionare il proprio account di archiviazione.In the Storage accounts page, filter for your storage account (if needed), and then select your storage account.

Creare un contenitore BLOBCreate a blob container

In questa sezione viene creato un contenitore BLOB denominato adftutorial nell'archivio BLOB di Azure.In this section, you create a blob container named adftutorial in Azure Blob storage.

  1. Dalla pagina dell'account di archiviazione, selezionare Panoramica > BLOB.From the storage account page, select Overview > Blobs.

  2. Nella barra degli strumenti <Nome account> - BLOB selezionare Contenitore.On the <Account name> - Blobs page's toolbar, select Container.

  3. Nella finestra di dialogo Nuovo contenitore immettere adftutorial come nome e quindi fare clic su OK.In the New container dialog box, enter adftutorial for the name, and then select OK. La pagina <Nome account> - BLOB viene aggiornata per includere adftutorial nell'elenco dei contenitori.The <Account name> - Blobs page is updated to include adftutorial in the list of containers.

    Elenco dei contenitori

Aggiungere una cartella di input e un file per il contenitore BLOBAdd an input folder and file for the blob container

In questa sezione verrà creata una cartella denominata input nel contenitore appena creato, quindi si caricherà un file di esempio in tale cartella.In this section, you create a folder named input in the container you just created, and then upload a sample file to the input folder. Prima di iniziare, aprire un editor di testo come il Blocco note e creare un file denominato emp.txt con il contenuto seguente: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

Salvare il file nella cartella C:\ADFv2QuickStartPSH.Save the file in the C:\ADFv2QuickStartPSH folder. Se la cartella non esiste, crearla. Tornare al portale di Azure e seguire questa procedura:(If the folder doesn't already exist, create it.) Then return to the Azure portal and follow these steps:

  1. Dal punto in cui ci si trovava nella pagina <Nome account> - BLOB selezionare adftutorial nell'elenco aggiornato dei contenitori.In the <Account name> - Blobs page where you left off, select adftutorial from the updated list of containers. Se la finestra è stata chiusa o ci si è spostati su un'altra pagina, accedere nuovamente al portale di Azure, selezionare Tutti i servizi > Archiviazione > Account di archiviazione, selezionare l'account di archiviazione e quindi selezionare BLOB > adftutorial.(If you closed the window or went to another page, sign in to the Azure portal again, select All services > Storage > Storage accounts, select your storage account, and then select Blobs > adftutorial.)

  2. Nella barra degli strumenti della pagina del contenitore adftutorial selezionare Carica.On the adftutorial container page's toolbar, select Upload.

  3. Nella pagina Carica BLOB selezionare la casella File, quindi individuare e selezionare il file emp.txt.In the Upload blob page, select the Files box, and then browse to and select the emp.txt file.

  4. Espandere l'intestazione Avanzate.Expand the Advanced heading. La pagina viene ora visualizzata come illustrato di seguito:The page now displays as shown:

    Selezionare il collegamento Avanzate

  5. Nella casella Carica nella cartella immettere input.In the Upload to folder box, enter input.

  6. Selezionare il pulsante Carica.Select the Upload button. Verranno visualizzati il file emp.txt e lo stato del caricamento nell'elenco.You should see the emp.txt file and the status of the upload in the list.

  7. Selezionare l'icona Chiudi (una X) per chiudere la pagina Carica BLOB.Select the Close icon (an X) to close the Upload blob page.

Lasciare aperta la pagina del contenitore adftutorial.Keep the adftutorial container page open. perché verrà usata per verificare l'output alla fine di questa guida introduttiva.You use it to verify the output at the end of this quickstart.

Visual StudioVisual Studio

Nella procedura guidata illustrata in questo articolo viene usato Visual Studio 2019.The walkthrough in this article uses Visual Studio 2019. Le procedure per Visual Studio 2013, 2015 o 2017 sono leggermente diverse.The procedures for Visual Studio 2013, 2015, or 2017 differ slightly.

Azure .NET SDKAzure .NET SDK

Scaricare e installare Azure .NET SDK nel computer.Download and install Azure .NET SDK on your machine.

Creare un'applicazione in Azure Active DirectoryCreate an application in Azure Active Directory

Dalle sezioni in Procedura: Usare il portale per creare un'entità servizio e applicazione di Azure AD che possano accedere alle risorse, seguire le istruzioni per eseguire queste attività: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. In Creare un'applicazione Azure Active Directory creare un'applicazione che rappresenti l'applicazione .NET che verrà creata in questa esercitazione.In Create an Azure Active Directory application, create an application that represents the .NET application you are creating in this tutorial. Come URL di accesso è possibile specificare un URL fittizio, come illustrato nell'articolo (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. In Ottenere i valori per l'accesso ottenere l'ID dell'applicazione e l'ID del tenant, quindi prendere nota di questi valori che verranno usati più avanti in questa esercitazione.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. In Certificati e segreti ottenere la chiave di autenticazione e prendere nota di questo valore che verrà usato più avanti in questa esercitazione.In Certificates and secrets, get the authentication key, and note down this value that you use later in this tutorial.
  4. In Assegnare l'applicazione a un ruolo assegnare l'applicazione al ruolo Collaboratore a livello di sottoscrizione, in modo che l'applicazione possa creare le data factory nella sottoscrizione.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.

Creare un progetto di Visual StudioCreate a Visual Studio project

Creare quindi un'applicazione console C# .NET in Visual Studio:Next, create a C# .NET console application in Visual Studio:

  1. Avviare Visual Studio.Launch Visual Studio.
  2. Nella finestra di avvio selezionare Crea un nuovo progetto > App console (.NET Framework) .In the Start window, select Create a new project > Console App (.NET Framework). È necessario .NET versione 4.5.2 o successiva..NET version 4.5.2 or above is required.
  3. In Nome progetto immettere ADFv2QuickStart.In Project name, enter ADFv2QuickStart.
  4. Selezionare Crea per creare il progetto.Select Create to create the project.

Installare i pacchetti NuGetInstall NuGet packages

  1. Fare clic su Strumenti > Gestione Pacchetti NuGet > Console di Gestione pacchetti.Select Tools > NuGet Package Manager > Package Manager Console.

  2. Nel riquadro Console di Gestione pacchetti eseguire questi comandi per installare i pacchetti.In the Package Manager Console pane, run the following commands to install packages. Per altre informazioni, vedere il pacchetto 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
    

Creare un client di data factoryCreate a data factory client

  1. Aprire Program.cs e includere le istruzioni seguenti per aggiungere riferimenti agli spazi dei nomi.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.Azure.Management.ResourceManager;
    using Microsoft.Azure.Management.DataFactory;
    using Microsoft.Azure.Management.DataFactory.Models;
    using Microsoft.IdentityModel.Clients.ActiveDirectory;
    
  2. Aggiungere il codice seguente al metodo Main per impostare le variabili.Add the following code to the Main method that sets the variables. Sostituire i segnaposto con i valori personalizzati.Replace the placeholders with your own values. Per un elenco di aree di Azure in cui Data Factory è attualmente disponibile, selezionare le aree di interesse nella pagina seguente, quindi espandere Analytics per individuare Data Factory: Prodotti disponibili in base all'area.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. Gli archivi dati (Archiviazione di Azure, database SQL di Azure e altri) e le risorse di calcolo (HDInsight e altre) usati dalla data factory possono trovarsi in altre aree.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. Aggiungere il codice seguente al metodo Main per creare un'istanza della classe DataFactoryManagementClient.Add the following code to the Main method that creates an instance of DataFactoryManagementClient class. Usare questo oggetto per creare una data factory, il servizio collegato, i set di dati e la pipeline.You use this object to create a data factory, a linked service, datasets, and a pipeline. È possibile usare questo oggetto anche per monitorare i dettagli sull'esecuzione della 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 };
    

Creare una data factoryCreate a data factory

Aggiungere il codice seguente al metodo Main per creare una data factory.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);
}

Creare un servizio collegatoCreate a linked service

Aggiungere il codice seguente al metodo Main per creare un servizio collegato di Archiviazione di Azure.Add the following code to the Main method that creates an Azure Storage linked service.

Si creano servizi collegati in una data factory per collegare gli archivi dati e i servizi di calcolo alla data factory.You create linked services in a data factory to link your data stores and compute services to the data factory. In questa guida di avvio rapido è necessario creare solo un servizio collegato Archiviazione di Azure per l'origine della copia e l'archivio sink, denominato "AzureStorageLinkedService" nell'esempio.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));

Creare un set di datiCreate a dataset

Aggiungere il codice seguente al metodo Main per creare un set di dati del BLOB di Azure.Add the following code to the Main method that creates an Azure blob dataset.

È necessario definire un set di dati che rappresenta i dati da copiare da un'origine a un sink.You define a dataset that represents the data to copy from a source to a sink. In questo esempio il set di dati del BLOB fa riferimento al servizio collegato Archiviazione di Azure creato nel passaggio precedente.In this example, this Blob dataset references to the Azure Storage linked service you created in the previous step. Il set di dati accetta un parametro il cui valore è impostato in un'attività che utilizza il set di dati.The dataset takes a parameter whose value is set in an activity that consumes the dataset. Il parametro viene usato per costruire la proprietà "folderPath" che punta al percorso in cui si trovano e sono archiviati i dati.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));

Creare una pipelineCreate a pipeline

Aggiungere il codice seguente al metodo Main per creare una pipeline con un'attività di copia.Add the following code to the Main method that creates a pipeline with a copy activity.

In questo esempio la pipeline contiene un'attività e accetta due parametri: il percorso del BLOB di input e il percorso del BLOB di output.In this example, this pipeline contains one activity and takes two parameters: the input blob path and the output blob path. I valori per questi parametri vengono impostati all'esecuzione/attivazione della pipeline.The values for these parameters are set when the pipeline is triggered/run. L'attività di copia fa riferimento allo stesso set di dati del BLOB creato nel passaggio precedente come input e output.The copy activity refers to the same blob dataset created in the previous step as input and output. Quando il set di dati viene usato come set di dati di input, viene specificato il percorso di input.When the dataset is used as an input dataset, input path is specified. Quando il set di dati viene usato come set di dati di output, viene specificato il percorso di output.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));

Creare un'esecuzione della pipelineCreate a pipeline run

Aggiungere il codice seguente al metodo Main per attivare un'esecuzione della pipeline.Add the following code to the Main method that triggers a pipeline run.

Questo codice imposta anche i valori dei parametri inputPath e outputPath specificati nella pipeline con i valori effettivi dei percorsi dei BLOB di origine e sink.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);

Monitorare un'esecuzione della pipelineMonitor a pipeline run

  1. Aggiungere il codice seguente al metodo Main per controllare continuamente lo stato fino al termine della copia dei dati.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")
            System.Threading.Thread.Sleep(15000);
        else
            break;
    }
    
  2. Aggiungere il codice seguente al metodo Main per recuperare i dettagli dell'esecuzione dell'attività di copia, ad esempio le dimensioni dei dati letti o scritti.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();
    

Eseguire il codiceRun the code

Compilare e avviare l'applicazione, quindi verificare l'esecuzione della pipeline.Build and start the application, then verify the pipeline execution.

La console stampa lo stato di creazione della data factory, del servizio collegato, dei set di dati, della pipeline e dell'esecuzione della pipeline.The console prints the progress of creating data factory, linked service, datasets, pipeline, and pipeline run. Controlla quindi lo stato di esecuzione della pipeline.It then checks the pipeline run status. Attendere fino a visualizzare i dettagli dell'esecuzione dell'attività di copia con le dimensioni dei dati di lettura/scrittura.Wait until you see the copy activity run details with the size of the read/write data. Usare quindi strumenti come Azure Storage Explorer per verificare che i BLOB siano stati copiati da "inputBlobPath" a "outputBlobPath", come specificato nelle variabili.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.

Output di esempioSample 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...

Verificare l'outputVerify the output

La pipeline crea automaticamente la cartella di output nel contenitore BLOB adftutorial,The pipeline automatically creates the output folder in the adftutorial blob container. quindi copia il file emp.txt dalla cartella di input a quella di output.Then, it copies the emp.txt file from the input folder to the output folder.

  1. Nel portale di Azure, nella pagina del contenitore adftutorial in cui si è rimasti dalla sezione precedente Aggiungere una cartella di input e un file per il contenitore BLOB selezionare Aggiorna per visualizzare la cartella di output.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. Nell'elenco delle cartelle selezionare output.In the folder list, select output.
  3. Verificare che emp.txt venga copiato nella cartella di output.Confirm that the emp.txt is copied to the output folder.

Pulire le risorseClean up resources

Per eliminare una data factory a livello di codice, aggiungere al programma le righe di codice seguenti: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);

Passaggi successiviNext steps

La pipeline in questo esempio copia i dati da una posizione a un'altra in un archivio BLOB di Azure.The pipeline in this sample copies data from one location to another location in an Azure blob storage. Per informazioni sull'uso di Data Factory in più scenari, fare riferimento alle esercitazioni.Go through the tutorials to learn about using Data Factory in more scenarios.