Mulai Cepat: Membuat pabrik data dan alur menggunakan .NET SDK

BERLAKU UNTUK:Azure Data Factory Azure Synapse Analytics

Tip

Cobalah Data Factory di Microsoft Fabric, solusi analitik all-in-one untuk perusahaan. Microsoft Fabric mencakup semuanya mulai dari pergerakan data hingga ilmu data, analitik real time, kecerdasan bisnis, dan pelaporan. Pelajari cara memulai uji coba baru secara gratis!

Mulai cepat ini menjelaskan cara menggunakan Azure CLI untuk membuat Azure Data Factory. Alur yang Anda buat di pabrik data ini menyalin data dari satu folder ke folder lain dalam penyimpanan Azure Blob. Untuk tutorial tentang cara mengubah data menggunakan Azure Data Factory, lihat Tutorial: Mengubah data menggunakan Spark.

Catatan

Artikel ini tidak memberikan pengenalan mendetail tentang layanan Data Factory. Untuk pengenalan tentang layanan Azure Data Factory, lihat Pengantar Azure Data Factory.

Prasyarat

Langganan Azure

Jika Anda tidak memiliki langganan Azure, buat akun gratis sebelum Anda memulai.

Peran Azure

Untuk membuat instans Data Factory, akun pengguna yang Anda gunakan untuk masuk ke Azure harus menjadi anggota peran kontributor atau pemilik, atau administrator langganan Azure. Untuk menampilkan izin yang Anda miliki di langganan, buka portal Azure, pilih nama pengguna Anda di sudut kanan atas, pilih ikon "..." untuk opsi selengkapnya, lalu pilih Izin saya. Jika Anda memiliki akses ke beberapa langganan, pilih langganan yang sesuai.

Untuk membuat dan mengelola sumber daya anak untuk Data Factory - termasuk himpunan data, layanan tertaut, alur, pemicu, dan runtime integrasi - persyaratan berikut ini berlaku:

  • Untuk membuat dan mengelola sumber daya anak di portal Azure, Anda harus masuk ke dalam peran Kontributor Data Factory di tingkat grup sumber daya atau di atasnya.
  • Untuk membuat dan mengelola sumber daya anak dengan PowerShell atau SDK, peran kontributor di tingkat sumber daya atau di atasnya sudah cukup.

Untuk instruksi sampel tentang cara menambahkan pengguna ke peran, lihat artikel Menambahkan peran.

Untuk informasi selengkapnya, baca artikel berikut:

Akun Azure Storage

Anda menggunakan akun Azure Storage serba guna (khususnya penyimpanan Blob) sebagai sumber dan tujuan penyimpanan data dalam mulai cepat ini. Jika Anda belum punya akun penyimpanan Azure Storage serba guna, lihat Buat akun penyimpanan untuk membuatnya.

Dapatkan nama akun penyimpanan

Anda memerlukan nama akun Azure Storage Anda untuk mulai cepat ini. Prosedur berikut ini menyediakan langkah-langkah untuk mendapatkan nama akun penyimpanan Anda:

  1. Di browser web, buka portal Azure, lalu masuk menggunakan nama pengguna dan kata sandi Azure Anda.
  2. Dari menu portal Azure, pilih Semua layanan, lalu pilih Penyimpanan>Akun penyimpanan. Anda juga dapat mencari dan memilih Akun penyimpanan dari halaman mana pun.
  3. Dalam halaman Akun penyimpanan, filter untuk akun penyimpanan Anda (jika diperlukan), lalu pilih akun penyimpanan Anda.

Anda juga dapat mencari dan memilih Akun penyimpanan dari halaman mana pun.

Membuat kontainer blob

Di bagian ini, Anda membuat kontainer blob bernama adftutorial di penyimpanan Azure Blob.

  1. Dari halaman akun penyimpanan, pilih Gambaran Umum>Kontainer.

  2. Di toolbar halaman <Nama akun> - Kontainer, pilih Kontainer.

  3. Di Kotak dialog Kontainer baru, masukkan adftutorial untuk nama, lalu pilih OK. Halaman <Nama akun> - Kontainer diperbarui untuk menyertakan adftutorial dalam daftar kontainer.

    List of containers

Menambahkan folder input dan file untuk kontainer blob

Di bagian ini, Anda membuat folder bernama input dalam kontainer yang Anda buat, lalu mengunggah file sampel ke folder input. Sebelum memulai, buka editor teks seperti Notepad, dan buat file bernama emp.txt dengan konten berikut:

John, Doe
Jane, Doe

Simpan file di folder C:\ADFv2QuickStartPSH. (Jika folder belum ada, buatlah.) Lalu kembali ke portal Azure dan ikuti langkah-langkah berikut:

  1. Di halaman <Nama akun> - Kontainer tempat yang Anda tinggalkan, pilih adftutorial dari daftar kontainer yang diperbarui.

    1. Jika Anda menutup jendela atau pergi ke halaman lain, masuk lagi ke portal Azure.
    2. Dari menu portal Azure, pilih Semua layanan, lalu pilih Penyimpanan>Akun penyimpanan. Anda juga dapat mencari dan memilih Akun penyimpanan dari halaman mana pun.
    3. Pilih akun penyimpanan Anda, lalu pilih Kontainer>adftutorial.
  2. Pada tollbar halaman kontainer adftutorial, pilih Unggah.

  3. Di halaman Unggah blob, pilih kotak File, lalu telusuri dan pilih file emp.txt.

  4. Memperluas judul Tingkat Lanjut. Halaman sekarang menampilkan seperti yang ditunjukkan:

    Select Advanced link

  5. Di kotak Unggah ke folder, masukkan input.

  6. Pilih tombol Unggah. Anda harus melihat file emp.txt dan status unggahan dalam daftar.

  7. Pilih ikon Tutup (X) untuk menutup halaman Unggah blob.

Jaga halaman kontainer adftutorial tetap terbuka. Anda menggunakannya untuk memverifikasi output di akhir mulai cepat ini.

Visual Studio

Panduan dalam artikel ini menggunakan Visual Studio 2019. Prosedur untuk Visual Studio 2013, 2015, atau 2017 sedikit berbeda.

Membuat aplikasi di MICROSOFT Entra ID

Dari bagian di Cara: Menggunakan portal untuk membuat aplikasi Microsoft Entra dan perwakilan layanan yang dapat mengakses sumber daya, ikuti instruksi untuk melakukan tugas-tugas ini:

  1. Di Buat aplikasi Microsoft Entra, buat aplikasi yang mewakili aplikasi .NET yang Anda buat dalam tutorial ini. Untuk URL masuk, Anda dapat memberikan URL dummy seperti yang ditunjukkan dalam artikel (https://contoso.org/exampleapp).
  2. Di Dapatkan nilai untuk masuk, dapatkan ID aplikasi dan ID penyewa, dan catat nilai-nilai ini yang Anda gunakan nanti dalam tutorial ini.
  3. Dalam Sertifikat dan rahasia, dapatkan kunci autentikasi, dan catat nilai ini yang Anda gunakan nanti dalam tutorial ini.
  4. Di Tetapkan aplikasi ke peran, tetapkan aplikasi ke peran Kontributor pada tingkat langganan sehingga aplikasi dapat membuat pabrik data dalam langganan.

Membuat proyek Visual Studio

Selanjutnya, buat aplikasi konsol C# .NET di Visual Studio:

  1. Luncurkan Visual Studio.
  2. Di jendela Mulai, pilih Buat Aplikasi Konsol proyek baru >(.NET Framework). Diperlukan .NET versi 4.5.2 atau lebih tinggi.
  3. Di Nama proyek, masukkan ADFv2QuickStart.
  4. Pilih Buat untuk membuat proyek.

Instal paket NuGet

  1. Pilih Alat>NuGet Package Manager>Packet Manager Console.

  2. Di panel Konsol Pengelola Paket, jalankan perintah berikut untuk memasang paket. Untuk informasi selengkapnya, lihat paket NuGet Azure.ResourceManager.DataFactory .

    Install-Package Azure.ResourceManager.DataFactory -IncludePrerelease
    Install-Package Azure.Identity 
    

Membuat pabrik data

  1. Buka Program.cs, termasuk pernyataan berikut untuk menambahkan referensi ke kumpulan nama XML.

    using Azure;
    using Azure.Core;
    using Azure.Core.Expressions.DataFactory;
    using Azure.Identity;
    using Azure.ResourceManager;
    using Azure.ResourceManager.DataFactory;
    using Azure.ResourceManager.DataFactory.Models;
    using Azure.ResourceManager.Resources;
    using System;
    using System.Collections.Generic;
    
  2. Tambahkan kode berikut ke metode Utama yang mengatur variabel. Ganti tempat penampung dengan nilai Anda sendiri. Untuk daftar wilayah Azure tempat Data Factory saat ini tersedia, pilih wilayah yang menarik minat Anda pada halaman berikut, lalu perluas Analitik untuk menemukan Data Factory: Produk yang tersedia menurut wilayah. Penyimpanan data (Azure Storage, Azure SQL Database, dll.) dan komputasi (HDInsight, dll.) yang digunakan oleh pabrik data dapat berada di wilayah lain.

    // 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 storageAccountName = "<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 inputBlobContainer = "<blob container to copy data from, e.g. containername>";
    string inputBlobPath = "<path to existing blob(s) to copy data from, e.g. inputdir/file>";
    //specify the contains and output folder where the files are copied
    string outputBlobContainer = "<blob container to copy data from, e.g. containername>";
    string outputBlobPath = "<the blob path to copy data to, e.g. outputdir/file>";
    
    // name of the Azure Storage linked service, blob dataset, and the pipeline
    string storageLinkedServiceName = "AzureStorageLinkedService";
    string blobDatasetName = "BlobDataset";
    string pipelineName = "Adfv2QuickStartPipeline";
    
  3. Tambahkan kode berikut ke metode Utama yang membuat pabrik data.

    ArmClient armClient = new ArmClient(
        new ClientSecretCredential(tenantID, applicationId, authenticationKey, new TokenCredentialOptions
        {
            AuthorityHost = AzureAuthorityHosts.AzurePublicCloud
        }), 
        subscriptionId, 
        new ArmClientOptions { Environment = ArmEnvironment.AzurePublicCloud }
    );
    
    ResourceIdentifier resourceIdentifier = SubscriptionResource.CreateResourceIdentifier(subscriptionId);
    SubscriptionResource subscriptionResource = armClient.GetSubscriptionResource(resourceIdentifier);
    
    Console.WriteLine("Get an existing resource group " + resourceGroupName + "...");
    var resourceGroupOperation = subscriptionResource.GetResourceGroups().Get(resourceGroupName);
    ResourceGroupResource resourceGroupResource = resourceGroupOperation.Value;
    
    Console.WriteLine("Create a data factory " + dataFactoryName + "...");
    DataFactoryData dataFactoryData = new DataFactoryData(AzureLocation.EastUS2);
    var dataFactoryOperation = resourceGroupResource.GetDataFactories().CreateOrUpdate(WaitUntil.Completed, dataFactoryName, dataFactoryData);
    Console.WriteLine(dataFactoryOperation.WaitForCompletionResponse().Content);
    
    // Get the data factory resource
    DataFactoryResource dataFactoryResource = dataFactoryOperation.Value;
    

Membuat layanan tertaut

Tambahkan kode berikut ke metode Utama yang membuat layanan tertaut Azure Storage.

Anda membuat layanan tertaut di pabrik data untuk menautkan penyimpanan data dan layanan komputasi ke pabrik data. Dalam Mulai Cepat ini, Anda hanya perlu membuat satu layanan tertaut Azure Blob Storage untuk sumber salin dan penyimpanan sink; ini bernama "AzureBlobStorageLinkedService" dalam sampel.

// Create an Azure Storage linked service
Console.WriteLine("Create a linked service " + storageLinkedServiceName + "...");
AzureBlobStorageLinkedService azureBlobStorage = new AzureBlobStorageLinkedService()
{
    ConnectionString = azureBlobStorageConnectionString
};

DataFactoryLinkedServiceData linkedServiceData = new DataFactoryLinkedServiceData(azureBlobStorage);

var linkedServiceOperation = dataFactoryResource.GetDataFactoryLinkedServices().CreateOrUpdate(WaitUntil.Completed, storageLinkedServiceName, linkedServiceData);
Console.WriteLine(linkedServiceOperation.WaitForCompletionResponse().Content);

Buat himpunan data

Tambahkan kode berikut ke metode Utama yang membuat himpunan data teks Berbatas.

Anda menentukan himpunan data yang mewakili data untuk disalin dari sumber ke sink. Dalam contoh ini, himpunan data teks Yang dibatasi ini mereferensikan ke layanan tertaut Azure Blob Storage yang Anda buat di langkah sebelumnya. Himpunan data mengambil dua parameter yang nilainya diatur dalam aktivitas yang menggunakan himpunan data. Parameter digunakan untuk membangun "kontainer" dan "folderPath" yang menunjuk ke tempat data berada/disimpan.

// Create an Azure Blob dataset
DataFactoryLinkedServiceReference linkedServiceReference = new DataFactoryLinkedServiceReference(DataFactoryLinkedServiceReferenceType.LinkedServiceReference, storageLinkedServiceName);
DelimitedTextDataset delimitedTextDataset = new DelimitedTextDataset(linkedServiceReference)
{
    DataLocation = new AzureBlobStorageLocation
    {
        Container = DataFactoryElement<string>.FromExpression("@dataset().container"),
        FileName = DataFactoryElement<string>.FromExpression("@dataset().path")
    },
    Parameters =
    {
        new KeyValuePair<string, EntityParameterSpecification>("container",new EntityParameterSpecification(EntityParameterType.String)),
        new KeyValuePair<string, EntityParameterSpecification>("path",new EntityParameterSpecification(EntityParameterType.String))
    },
    FirstRowAsHeader = false,
    QuoteChar = "\"",
    EscapeChar = "\\",
    ColumnDelimiter = ","
};

DataFactoryDatasetData datasetData = new DataFactoryDatasetData(delimitedTextDataset);

var datasetOperation = dataFactoryResource.GetDataFactoryDatasets().CreateOrUpdate(WaitUntil.Completed, blobDatasetName, datasetData);
Console.WriteLine(datasetOperation.WaitForCompletionResponse().Content);

Buat alur

Tambahkan kode berikut ke metode Utama yang membuat alur dengan aktivitas salin.

Dalam contoh ini, alur ini berisi satu aktivitas dan mengambil empat parameter: kontainer dan jalur blob input, dan kontainer dan jalur blob output. Nilai untuk parameter ini diatur saat alur dipicu/dijalankan. Aktivitas salin mengacu pada set data gumpalan yang sama yang dibuat pada langkah sebelumnya sebagai input dan output. Saat himpunan data digunakan sebagai himpunan data input, kontainer input dan jalur ditentukan. Dan, ketika himpunan data digunakan sebagai himpunan data output, kontainer output dan jalur ditentukan.

// Create a pipeline with a copy activity
Console.WriteLine("Creating pipeline " + pipelineName + "...");
DataFactoryPipelineData pipelineData = new DataFactoryPipelineData()
{
    Parameters =
    {
        new KeyValuePair<string, EntityParameterSpecification>("inputContainer",new EntityParameterSpecification(EntityParameterType.String)),
        new KeyValuePair<string, EntityParameterSpecification>("inputPath",new EntityParameterSpecification(EntityParameterType.String)),
        new KeyValuePair<string, EntityParameterSpecification>("outputContainer",new EntityParameterSpecification(EntityParameterType.String)),
        new KeyValuePair<string, EntityParameterSpecification>("outputPath",new EntityParameterSpecification(EntityParameterType.String))
    },
    Activities =
    {
        new CopyActivity("CopyFromBlobToBlob",new DataFactoryBlobSource(),new DataFactoryBlobSink())
        {
            Inputs =
            {
                new DatasetReference(DatasetReferenceType.DatasetReference,blobDatasetName)
                {
                    Parameters =
                    {
                        new KeyValuePair<string, BinaryData>("container", BinaryData.FromString("\"@pipeline().parameters.inputContainer\"")),
                        new KeyValuePair<string, BinaryData>("path", BinaryData.FromString("\"@pipeline().parameters.inputPath\""))
                    }
                }
            },
            Outputs =
            {
                new DatasetReference(DatasetReferenceType.DatasetReference,blobDatasetName)
                {
                    Parameters =
                    {
                        new KeyValuePair<string, BinaryData>("container", BinaryData.FromString("\"@pipeline().parameters.outputContainer\"")),
                        new KeyValuePair<string, BinaryData>("path", BinaryData.FromString("\"@pipeline().parameters.outputPath\""))
                    }
                }
            }
        }
    }
};

var pipelineOperation = dataFactoryResource.GetDataFactoryPipelines().CreateOrUpdate(WaitUntil.Completed, pipelineName, pipelineData);
Console.WriteLine(pipelineOperation.WaitForCompletionResponse().Content);

Membuat eksekusi alur

Tambahkan kode berikut ke metode Utama yang memicu eksekusi alur.

Kode ini juga menetapkan nilai parameter inputContainer, inputPath, outputContainer, dan outputPath yang ditentukan dalam alur dengan nilai aktual dari jalur blob sumber dan sink.

// Create a pipeline run
Console.WriteLine("Creating pipeline run...");
Dictionary<string, BinaryData> parameters = new Dictionary<string, BinaryData>()
{
    { "inputContainer",BinaryData.FromObjectAsJson(inputBlobContainer) },
    { "inputPath",BinaryData.FromObjectAsJson(inputBlobPath) },
    { "outputContainer",BinaryData.FromObjectAsJson(outputBlobContainer) },
    { "outputPath",BinaryData.FromObjectAsJson(outputBlobPath) }
};

var pipelineResource = dataFactoryResource.GetDataFactoryPipeline(pipelineName);
var runResponse = pipelineResource.Value.CreateRun(parameters);
Console.WriteLine("Pipeline run ID: " + runResponse.Value.RunId);

Memantau eksekusi alur

  1. Tambahkan kode berikut ke metode Utama untuk terus memeriksa status hingga selesai menyalin data.

    // Monitor the pipeline run
    Console.WriteLine("Checking pipeline run status...");
    DataFactoryPipelineRunInfo pipelineRun;
    while (true)
    {
        pipelineRun = dataFactoryResource.GetPipelineRun(runResponse.Value.RunId.ToString());
        Console.WriteLine("Status: " + pipelineRun.Status);
        if (pipelineRun.Status == "InProgress" || pipelineRun.Status == "Queued")
            System.Threading.Thread.Sleep(15000);
        else
            break;
    }
    
  2. Tambahkan kode berikut ke metode Utama yang mengambil salinan aktivitas menjalankan detail, seperti ukuran data yang dibaca atau ditulis.

    // Check the copy activity run details
    Console.WriteLine("Checking copy activity run details...");
    
    var queryResponse = dataFactoryResource.GetActivityRun(pipelineRun.RunId.ToString(), 
        new RunFilterContent(DateTime.UtcNow.AddMinutes(-10), DateTime.UtcNow.AddMinutes(10)));
    
    var enumerator = queryResponse.GetEnumerator();
    enumerator.MoveNext();
    
    if (pipelineRun.Status == "Succeeded")
        Console.WriteLine(enumerator.Current.Output);
    else
        Console.WriteLine(enumerator.Current.Error);
    Console.WriteLine("\nPress any key to exit...");
    Console.ReadKey();
    

Menjalankan kode

Buat dan mulai aplikasi, lalu verifikasi eksekusi alur.

Konsol mencetak kemajuan pembuatan pabrik data, layanan tertaut, himpunan data, alur, dan eksekusi alur. Kemudian memeriksa status eksekusi alur. Tunggu hingga Anda melihat aktivitas salin sedang menjalankan detail dengan ukuran data baca/tulis. Kemudian, gunakan alat seperti Penjelajah Azure Storage untuk memeriksa blob disalin ke "outputBlobPath" dari "inputBlobPath" seperti yang Anda tentukan dalam variabel.

Sampel output

Create a data factory quickstart-adf...
{
  "name": "quickstart-adf",
  "type": "Microsoft.DataFactory/factories",
  "properties": {
    "provisioningState": "Succeeded",
    "version": "2018-06-01"
  },
  "location": "eastus2"
}
Create a linked service AzureBlobStorage...
{
  "name": "AzureBlobStorage",
  "type": "Microsoft.DataFactory/factories/linkedservices",
  "properties": {
    "type": "AzureBlobStorage",
    "typeProperties": {
      "connectionString": "DefaultEndpointsProtocol=https;AccountName=<storageAccountName>;",
      "encryptedCredential": "<encryptedCredential>"
    }
  }
}
Creating dataset BlobDelimitedDataset...
{
  "name": "BlobDelimitedDataset",
  "type": "Microsoft.DataFactory/factories/datasets",
  "properties": {
    "type": "DelimitedText",
    "linkedServiceName": {
      "type": "LinkedServiceReference",
      "referenceName": "AzureBlobStorage"
    },
    "parameters": {
      "container": {
        "type": "String"
      },
      "path": {
        "type": "String"
      }
    },
    "typeProperties": {
      "location": {
        "container": {
          "type": "Expression",
          "value": "@dataset().container"
        },
        "type": "AzureBlobStorageLocation",
        "fileName": {
          "type": "Expression",
          "value": "@dataset().path"
        }
      },
      "columnDelimiter": ",",
      "quoteChar": "\"",
      "escapeChar": "\\",
      "firstRowAsHeader": false
    }
  }
}
Creating pipeline Adfv2QuickStartPipeline...
{
  "properties": {
    "activities": [
      {
        "inputs": [
          {
            "type": "DatasetReference",
            "referenceName": "BlobDelimitedDataset",
            "parameters": {
              "container": "@pipeline().parameters.inputContainer",
              "path": "@pipeline().parameters.inputPath"
            }
          }
        ],
        "outputs": [
          {
            "type": "DatasetReference",
            "referenceName": "BlobDelimitedDataset",
            "parameters": {
              "container": "@pipeline().parameters.outputContainer",
              "path": "@pipeline().parameters.outputPath"
            }
          }
        ],
        "name": "CopyFromBlobToBlob",
        "type": "Copy",
        "typeProperties": {
          "source": {
            "type": "BlobSource"
          },
          "sink": {
            "type": "BlobSink"
          }
        }
      }
    ],
    "parameters": {
      "inputContainer": {
        "type": "String"
      },
      "inputPath": {
        "type": "String"
      },
      "outputContainer": {
        "type": "String"
      },
      "outputPath": {
        "type": "String"
      }
    }
  }
}
Creating pipeline run...
Pipeline run ID: 3aa26ffc-5bee-4db9-8bac-ccbc2d7b51c1
Checking pipeline run status...
Status: InProgress
Status: Succeeded
Checking copy activity run details...
{
  "dataRead": 1048,
  "dataWritten": 1048,
  "filesRead": 1,
  "filesWritten": 1,
  "sourcePeakConnections": 1,
  "sinkPeakConnections": 1,
  "copyDuration": 8,
  "throughput": 1.048,
  "errors": [],
  "effectiveIntegrationRuntime": "AutoResolveIntegrationRuntime (East US 2)",
  "usedDataIntegrationUnits": 4,
  "billingReference": {
    "activityType": "DataMovement",
    "billableDuration": [
      {
        "meterType": "AzureIR",
        "duration": 0.06666666666666667,
        "unit": "DIUHours"
      }
    ],
    "totalBillableDuration": [
      {
        "meterType": "AzureIR",
        "duration": 0.06666666666666667,
        "unit": "DIUHours"
      }
    ]
  },
  "usedParallelCopies": 1,
  "executionDetails": [
    {
      "source": {
        "type": "AzureBlobStorage"
      },
      "sink": {
        "type": "AzureBlobStorage"
      },
      "status": "Succeeded",
      "start": "2023-12-15T10:25:33.9991558Z",
      "duration": 8,
      "usedDataIntegrationUnits": 4,
      "usedParallelCopies": 1,
      "profile": {
        "queue": {
          "status": "Completed",
          "duration": 5
        },
        "transfer": {
          "status": "Completed",
          "duration": 1,
          "details": {
            "listingSource": {
              "type": "AzureBlobStorage",
              "workingDuration": 0
            },
            "readingFromSource": {
              "type": "AzureBlobStorage",
              "workingDuration": 0
            },
            "writingToSink": {
              "type": "AzureBlobStorage",
              "workingDuration": 0
            }
          }
        }
      },
      "detailedDurations": {
        "queuingDuration": 5,
        "transferDuration": 1
      }
    }
  ],
  "dataConsistencyVerification": {
    "VerificationResult": "NotVerified"
  }
}

Press any key to exit...

Verifikasi output

Alur secara otomatis membuat folder output di kontainer blob adftutorial. Kemudian, menyalin file emp.txt dari folder input ke folder output.

  1. Di portal Microsoft Azure, pada halaman kontainer adftutorial tempat Anda berhenti di bagian Tambahkan folder input dan file untuk kontainer blob di atas, pilih Refresh untuk melihat folder output.
  2. Pada daftar folder, pilih output.
  3. Pastikan bahwa emp.txt disalin ke folder output.

Membersihkan sumber daya

Untuk menghapus pabrik data secara terprogram, tambahkan baris kode berikut ke program:

Console.WriteLine("Deleting the data factory");
dataFactoryResource.Delete(WaitUntil.Completed);

Langkah berikutnya

Alur dalam sampel ini menyalin data dari satu lokasi ke lokasi lain dalam penyimpanan blob Azure. Ikuti tutorial untuk mempelajari tentang penggunaan Data Factory dalam skenario lainnya.