Hızlı Başlangıç: .NET SDK’sını kullanarak veri fabrikası ve işlem hattı oluşturma

UYGULANANLAR: Azure Data Factory Azure Synapse Analytics

İpucu

Kuruluşlar için hepsi bir arada analiz çözümü olan Microsoft Fabric'te Data Factory'yi deneyin. Microsoft Fabric , veri taşımadan veri bilimine, gerçek zamanlı analize, iş zekasına ve raporlamaya kadar her şeyi kapsar. Yeni bir deneme sürümünü ücretsiz olarak başlatmayı öğrenin!

Bu hızlı başlangıçta Azure Data Factory oluşturmak için .NET SDK'nın nasıl kullanılacağı açıklanmaktadır. Bu veri fabrikasında oluşturduğunuz işlem hattı, verileri Azure blob depolama alanındaki bir klasörden başka bir klasöre kopyalar. Azure Data Factory kullanarak verileri dönüştürme hakkında bir öğretici için bkz. Öğretici: Spark kullanarak verileri dönüştürme.

Not

Bu makale, Data Factory hizmetine ayrıntılı giriş bilgileri sağlamaz. Azure Data Factory hizmetine giriş bilgileri için bkz. Azure Data Factory'ye giriş.

Önkoşullar

Azure aboneliği

Azure aboneliğiniz yoksa başlamadan önce ücretsiz bir hesap oluşturun.

Azure rolleri

Data Factory örnekleri oluşturmak için, Azure’da oturum açarken kullandığınız kullanıcı hesabı, katkıda bulunan, sahip veya yönetici rollerinin üyesi ya da bir Azure aboneliğinin yöneticisi olmalıdır. Abonelikte sahip olduğunuz izinleri görüntülemek için Azure portalına gidin, sağ üst köşedeki kullanıcı adınızı seçin, diğer seçenekler için "..." simgesini ve ardından İzinlerim'i seçin. Birden çok aboneliğe erişiminiz varsa uygun aboneliği seçin.

Data Factory için veri kümeleri, bağlı hizmetler, işlem hatları, tetikleyiciler ve tümleştirme çalışma zamanları gibi alt kaynaklar oluşturup yönetmek için aşağıdaki gereksinimlerin karşılanması gerekir:

  • Azure portalda alt öğe oluşturup yönetebilmek için kaynak grubu düzeyinde Data Factory Katılımcısı rolüne veya daha üst düzey bir role sahip olmanız gerekir.
  • PowerShell veya SDK ile alt öğe oluşturup yönetebilmek için kaynak düzeyinde katkıda bulunan rolü veya daha üst düzey bir rol yeterli olacaktır.

Kullanıcı rolü eklemeye ilişkin örnek yönergeler için Rol ekleme makalesine bakın.

Daha fazla bilgi için aşağıdaki makalelere bakın:

Azure Storage hesabı

Bu hızlı başlangıçta hem kaynak hem de hedef veri depoları olarak genel amaçlı bir Azure Depolama hesabı (özellikle Blob depolama) kullanırsınız. Genel amaçlı bir Azure Depolama hesabınız yoksa bkz . Depolama hesabı oluşturmak için depolama hesabı oluşturma.

Depolama hesabı adını alma

Bu hızlı başlangıç için Azure Depolama hesabınızın adı gerekir. Aşağıdaki yordam, depolama hesabınızın adını alma adımlarını sağlar:

  1. Web tarayıcısında Azure portalına gidin ve Azure kullanıcı adınızı ve parolanızı kullanarak oturum açın.
  2. Azure portalı menüsünden Tüm hizmetler'i ve ardından Depolama>Depolama hesapları'nı seçin. Ayrıca herhangi bir sayfadan Depolama hesapları için arama yapabilir ve seçebilirsiniz.
  3. Depolama hesapları sayfasında depolama hesabınızı (gerekirse) filtreleyin ve ardından depolama hesabınızı seçin.

Ayrıca herhangi bir sayfadan Depolama hesapları için arama yapabilir ve seçebilirsiniz.

Blob kapsayıcısı oluşturma

Bu bölümde, Azure Blob depolama alanında adftutorial adlı bir blob kapsayıcısı oluşturursunuz.

  1. Depolama hesabı sayfasından Genel Bakış>Kapsayıcıları'nı seçin.

  2. <Hesap adı> - Kapsayıcıları sayfasının araç çubuğunda Kapsayıcı'yı seçin.

  3. Yeni kapsayıcı iletişim kutusunda ad olarak adftutorial girin ve ardından Tamam’ı seçin. <Hesap adı> - Kapsayıcıları sayfası, kapsayıcılar listesine adftutorial içerecek şekilde güncelleştirilir.

    Kapsayıcı listesi

Blob kapsayıcısı için giriş klasörü ve dosyası ekleme

Bu bölümde, oluşturduğunuz kapsayıcıda input adlı bir klasör oluşturacak ve ardından giriş klasörüne örnek bir dosya yükleyebilirsiniz. Başlamadan önce Not Defteri gibi bir metin düzenleyicisi açın ve aşağıdaki içeriğe sahip emp.txt adlı bir dosya oluşturun:

John, Doe
Jane, Doe

Dosyayı C:\ADFv2QuickStartPSH klasörüne kaydedin. (Klasör henüz yoksa oluşturun.) Ardından Azure portalına dönün ve şu adımları izleyin:

  1. Kaldığınız Hesap Adı> - Kapsayıcıları sayfasında güncelleştirilmiş kapsayıcı listesinden adftutorial öğesini seçin.<

    1. Pencereyi kapattıysanız veya başka bir sayfaya gittiyseniz Azure portalında yeniden oturum açın.
    2. Azure portalı menüsünden Tüm hizmetler'i ve ardından Depolama>Depolama hesapları'nı seçin. Ayrıca herhangi bir sayfadan Depolama hesapları için arama yapabilir ve seçebilirsiniz.
    3. Depolama hesabınızı ve ardından Kapsayıcılar>adftutorial'i seçin.
  2. adftutorial kapsayıcı sayfasının araç çubuğunda Karşıya Yükle'yi seçin.

  3. Blobu karşıya yükle sayfasında Dosyalar kutusunu seçin ve ardından emp.txt dosyasına göz atın ve dosyayı seçin.

  4. Gelişmiş başlığını genişletin. Sayfa artık gösterildiği gibi görüntülenir:

    Gelişmiş bağlantı seçeneğini belirleme

  5. Klasöre yükle kutusuna giriş girin.

  6. Karşıya Yükle düğmesini seçin. Listede emp.txt dosyasını ve karşıya yükleme durumunu görmeniz gerekir.

  7. Blobu karşıya yükle sayfasını kapatmak için Kapat simgesini (X) seçin.

adftutorial kapsayıcı sayfasını açık tutun. Bu hızlı başlangıcın sonundaki çıktıyı doğrulamak için bu sayfayı kullanırsınız.

Visual Studio

Bu makaledeki kılavuzda Visual Studio 2019 kullanılır. Visual Studio 2013, 2015 veya 2017 yordamları biraz farklılık gösterir.

Microsoft Entra Id'de uygulama oluşturma

Nasıl yapılır: Kaynaklara erişebilen bir Microsoft Entra uygulaması ve hizmet sorumlusu oluşturmak için portalı kullanma bölümündeki bölümlerden şu görevleri gerçekleştirmek için yönergeleri izleyin:

  1. Microsoft Entra uygulaması oluşturma bölümünde, bu öğreticide oluşturduğunuz .NET uygulamasını temsil eden bir uygulama oluşturun. Oturum açma URL'si için, makalede gösterildiği gibi bir işlevsiz URL sağlayabilirsiniz (https://contoso.org/exampleapp).
  2. Oturum açmak için değerleri alma bölümünde uygulama kimliğini ve kiracı kimliğini alın ve bu öğreticinin devamında kullandığınız bu değerleri not edin.
  3. Sertifikalar ve gizli diziler bölümünde kimlik doğrulama anahtarını alın ve bu öğreticinin ilerleyen bölümlerinde kullandığınız bu değeri not edin.
  4. Uygulamayı bir role ata bölümünde, uygulamanın abonelikte veri fabrikaları oluşturabilmesi için uygulamayı abonelik düzeyinde Katkıda Bulunan rolüne atayın.

Visual Studio projesi oluşturma

Ardından Visual Studio'da bir C# .NET konsol uygulaması oluşturun:

  1. Visual Studio’yu başlatın.
  2. Başlangıç penceresinde Yeni proje>Konsol Uygulaması (.NET Framework) oluştur'u seçin. .NET sürüm 4.5.2 veya üzeri gereklidir.
  3. Proje adı alanına ADFv2QuickStart girin.
  4. Projeyi oluşturmak için Oluştur'u seçin.

NuGet paketlerini yükleme

  1. Araçlar>NuGet Paket Yöneticisi> Paket Yöneticisi Konsolu'nu seçin.

  2. Paket Yöneticisi Konsolu bölmesinde paketleri yüklemek için aşağıdaki komutları çalıştırın. Daha fazla bilgi için bkz . Azure.ResourceManager.DataFactory NuGet paketi.

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

Veri fabrikası oluşturma

  1. Program.cs dosyasını açın ve ad alanlarına başvurular eklemek için aşağıdaki deyimleri ekleyin.

    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. Aşağıdaki kodu, değişkenleri ayarlayan Main yöntemine ekleyin. Yer tutucuları kendi değerlerinizle değiştirin. Data Factory'nin kullanılabileceği Azure bölgelerinin bir listesi için bir sonraki sayfada ilgilendiğiniz bölgeleri seçin ve Analytics'i genişleterek Data Factory: Products available by region (Bölgeye göre kullanılabilir durumdaki ürünler) bölümünü bulun. Veri fabrikası tarafından kullanılan veri depoları (Azure Depolama, Azure SQL Veritabanı ve daha fazlası) ve işlem (HDInsight ve diğerleri) diğer bölgelerde olabilir.

    // 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. Aşağıdaki kodu veri fabrikası oluşturan Main yöntemine ekleyin.

    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;
    

Bağlı hizmet oluşturma

Aşağıdaki kodu bir Azure Depolama bağlı hizmeti oluşturan Main yöntemine ekleyin.

Veri depolarınızı ve işlem hizmetlerinizi veri fabrikasına bağlamak için veri fabrikasında bağlı hizmetler oluşturursunuz. Bu Hızlı Başlangıçta, hem kopyalama kaynağı hem de havuz deposu için yalnızca bir Azure Blob Depolama bağlı hizmet oluşturmanız gerekir; örnekte "AzureBlobStorageLinkedService" olarak adlandırılır.

// 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);

Veri kümesi oluşturma

Sınırlandırılmış metin veri kümesi oluşturan Main yöntemine aşağıdaki kodu ekleyin.

Bir kaynaktan havuza kopyalanacak verileri temsil eden bir veri kümesi tanımlayın. Bu örnekte, bu Sınırlandırılmış metin veri kümesi önceki adımda oluşturduğunuz Azure Blob Depolama bağlı hizmete başvurur. Veri kümesi, değeri veri kümesini kullanan bir etkinlikte ayarlanmış iki parametre alır. Parametreler, verilerin bulunduğu/depolandığı yere işaret eden "kapsayıcı" ve "folderPath" oluşturmak için kullanılır.

// 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);

İşlem hattı oluşturma

Aşağıdaki kodu bir kopyalama etkinliği ile işlem hattı oluşturan Main yöntemine ekleyin.

Bu örnekte, bu işlem hattı bir etkinlik içerir ve dört parametre alır: giriş blob kapsayıcısı ve yolu ile çıkış blob kapsayıcısı ve yolu. Bu parametrelerin değerleri, işlem hattı tetiklendiğinde/çalıştırıldığında ayarlanır. Kopyalama etkinliği, önceki adımda girdi ve çıktı olarak oluşturulmuş blob veri kümesini ifade eder. Veri kümesi giriş veri kümesi olarak kullanıldığında, giriş kapsayıcısı ve yolu belirtilir. Veri kümesi bir çıkış veri kümesi olarak kullanıldığında çıkış kapsayıcısı ve yolu belirtilir.

// 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);

İşlem hattı çalıştırması oluşturma

Aşağıdaki kodu bir işlem hattı çalıştırması tetikleyenMain yöntemine ekleyin.

Bu kod ayrıca işlem hattında belirtilen inputContainer, inputPath, outputContainer ve outputPath parametrelerinin değerlerini kaynak ve havuz blob yollarının gerçek değerleriyle ayarlar.

// 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);

İşlem hattı çalıştırmasını izleme

  1. Veri kopyalama işlemi tamamlanıncaya kadar durumu sürekli olarak denetlemek için aşağıdaki kodu Main yöntemine ekleyin.

    // 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. Aşağıdaki kodu , okunan veya yazılan verilerin boyutu gibi kopyalama etkinliği çalıştırma ayrıntılarını alan Main yöntemine ekleyin.

    // 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();
    

Kodu çalıştırma

Uygulamayı derleyip başlatın, ardından işlem hattı yürütmesini doğrulayın.

Konsol; veri fabrikası, bağlı hizmet, veri kümeleri, işlem hattı ve işlem hattı çalıştırmasının ilerleme durumunu yazdırır. Daha sonra işlem hattı çalıştırma durumunu denetler. Okuma/yazma verilerinin boyutuyla kopyalama etkinliği çalıştırma ayrıntılarını görene kadar bekleyin. Ardından Azure Depolama Gezgini gibi araçları kullanarak blobların değişkenlerde belirttiğiniz gibi "inputBlobPath" öğesinden "outputBlobPath" öğesine kopyalandığından dedik.

Örnek çıktı

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...

Çıktıyı doğrulama

İşlem hattı, adftutorial blob kapsayıcısında çıkış klasörünü otomatik olarak oluşturur. Ardından emp.txt dosyasını giriş klasöründen çıkış klasörüne kopyalar.

  1. Azure portalında, yukarıdaki Blob kapsayıcısı için giriş klasörü ve dosyası ekleme bölümünde durdurduğunuz adftutorial kapsayıcı sayfasında, çıkış klasörünü görmek için Yenile'yi seçin.
  2. Klasör listesinde çıkış'ı seçin.
  3. emp.txt dosyasının output klasörüne kopyalandığını onaylayın.

Kaynakları temizleme

Veri fabrikasını program aracılığıyla silmek için programa aşağıdaki kod satırlarını ekleyin:

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

Sonraki adımlar

Bu örnekteki işlem hattı, verileri bir konumdan Azure blob depolama alanındaki başka bir konuma kopyalar. Daha fazla senaryoda Data Factory’yi kullanma hakkında bilgi almak için öğreticileri okuyun.