Catatan
Akses ke halaman ini memerlukan otorisasi. Anda dapat mencoba masuk atau mengubah direktori.
Akses ke halaman ini memerlukan otorisasi. Anda dapat mencoba mengubah direktori.
Petunjuk
Data Factory di Microsoft Fabric adalah generasi Azure Data Factory berikutnya, dengan arsitektur yang lebih sederhana, AI bawaan, dan fitur baru. Jika Anda baru menggunakan integrasi data, mulailah dengan Fabric Data Factory. Beban kerja ADF yang ada dapat ditingkatkan ke Fabric untuk mengakses kemampuan baru di seluruh ilmu data, analitik real time, dan pelaporan.
Dalam tutorial ini, Anda membuat alur Data Factory yang menyalin data dari Azure Blob Storage ke Azure SQL Database. Pola konfigurasi di tutorial ini berlaku untuk menyalin dari penyimpanan data berbasis file ke penyimpanan data relasional. Untuk daftar penyimpanan data yang didukung sebagai sumber dan sink, lihat penyimpanan data dan format yang didukung.
Anda mengambil langkah-langkah berikut Di tutorial ini:
- Membuat pabrik data.
- Buat layanan tertaut Azure Storage dan Azure SQL Database.
- Buat Azure Blob dan himpunan data Azure SQL Database.
- Buat alur berisi Copy activity.
- Memulai eksekusi alur.
- Pantau pipeline dan menjalankan aktivitas.
Tutorial ini menggunakan SDK .NET. Anda dapat menggunakan mekanisme lain untuk berinteraksi dengan Azure Data Factory; lihat sampel di bawah Quickstarts.
Jika Anda tidak memiliki langganan Azure, buat akun Azure free sebelum Memulai.
Prasyarat
- akun Azure Storage. Anda menggunakan penyimpanan blob sebagai penyimpanan data sumber. Jika Anda tidak memiliki akun penyimpanan Azure, lihat Buat akun penyimpanan tujuan umum.
- Azure SQL Database. Anda menggunakan database sebagai penyimpanan data sink. Jika Anda tidak memiliki database di Azure SQL Database, lihat Buat database di Azure SQL Database.
- Visual Studio. Panduan dalam artikel ini menggunakan Visual Studio 2019.
- Azure SDK untuk .NET.
- aplikasi Microsoft Entra. Jika Anda tidak memiliki aplikasi Microsoft Entra, lihat bagian Buat aplikasi Microsoft EntraCara: Gunakan portal untuk membuat aplikasi Microsoft Entra. Salin nilai berikut untuk digunakan di langkah selanjutnya: ID Aplikasi (klien), kunci autentikasi, dan ID Direktori (penyewa). Tetapkan aplikasi ke peran Kontributor dengan mengikuti instruksi di artikel yang sama.
Buat blob dan tabel SQL
Sekarang, siapkan Azure Blob dan Azure SQL Database Anda untuk tutorial dengan membuat blob sumber dan tabel SQL sink.
Membuat blob sumber
Pertama, buat blob sumber dengan membuat kontainer dan mengunggah file teks input ke dalamnya:
Buka Notepad. Salin teks berikut dan simpan secara lokal ke file bernama inputEmp.txt.
John|Doe Jane|DoeGunakan alat seperti Azure Storage Explorer untuk membuat kontainer adfv2tutorial, dan untuk mengunggah file inputEmp.txt ke kontainer.
Buat tabel SQL sink
Selanjutnya, buat tabel SQL sink:
Gunakan skrip SQL berikut untuk membuat tabel dbo.emp di Azure SQL Database Anda.
CREATE TABLE dbo.emp ( ID int IDENTITY(1,1) NOT NULL, FirstName varchar(50), LastName varchar(50) ) GO CREATE CLUSTERED INDEX IX_emp_ID ON dbo.emp (ID);Izinkan layanan Azure mengakses SQL Database. Pastikan Anda mengizinkan akses ke layanan Azure di server Anda sehingga layanan Data Factory dapat menulis data ke SQL Database. Untuk memverifikasi dan mengaktifkan pengaturan ini, lakukan langkah berikut:
Buka portal Azure untuk mengelola server SQL Anda. Cari dan pilih server SQL.
Pilih server Anda.
Di bawah judul Keamanan menu server SQL, pilih Firewall dan jaringan virtual.
Di halaman Firewall dan jaringan virtual, di bawah Perbolehkan layanan dan sumber daya Azure untuk mengakses server ini, pilih ON.
Membuat proyek Visual Studio
Dengan menggunakan Visual Studio, buat aplikasi konsol C# .NET.
- Buka Visual Studio.
- Di jendela Mulai, pilih Buat proyek baru.
- Di jendela Buat proyek baru, pilih versi C# Console App (.NET Framework) dari daftar jenis proyek. Kemudian pilih Berikutnya.
- Di jendela Konfigurasi proyek baru Anda, masukkan Nama proyek sebagai ADFv2Tutorial. Untuk Lokasi, telusuri ke dan/atau buat direktori untuk menyimpan proyek. Lalu pilih Buat. Proyek baru muncul di Visual Studio IDE.
Instal paket NuGet
Selanjutnya, pasang paket pustaka yang diperlukan menggunakan pengelola paket NuGet.
Di bilah menu, pilih Tools>NuGet Package Manager>Package Manager Console.
Di panel Package Manager Console, jalankan perintah berikut untuk menginstal paket. Untuk informasi tentang paket NuGet Azure Data Factory, lihat Microsoft.Azure. Management.DataFactory.
Install-Package Microsoft.Azure.Management.DataFactory Install-Package Microsoft.Azure.Management.ResourceManager -PreRelease Install-Package Microsoft.IdentityModel.Clients.ActiveDirectory
Membuat klien untuk pabrik data
Ikuti langkah berikut untuk membuat klien pabrik data.
Buka Program.cs, kemudian timpa pernyataan yang ada dengan kode berikut untuk menambahkan referensi ke namespace.
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;Tambahkan kode berikut ke
Mainmetode yang mengatur variabel. Ganti 14 penanda dengan nilai Anda.Untuk melihat daftar wilayah Azure tempat Data Factory saat ini tersedia, lihat Product yang tersedia menurut wilayah. Di bawah daftar drop-down Produk, pilih Jelajahi>Analitik>Data Factory. Lalu di daftar drop-down Wilayah, pilih wilayah yang menarik minat Anda. Kisi muncul dengan status ketersediaan produk Data Factory untuk wilayah pilihan Anda.
Catatan
Penyimpanan data, seperti Azure Storage dan Azure SQL Database, dan komputasi, seperti HDInsight, yang digunakan Data Factory dapat berada di wilayah lain daripada yang Anda pilih untuk Data Factory.
// 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 to create the factory>"; string resourceGroup = "<your resource group to create the factory>"; string region = "<location to create the data factory in, such as East US>"; string dataFactoryName = "<name of data factory to create (must be globally unique)>"; // Specify the source Azure Blob information string storageAccount = "<your storage account name to copy data>"; string storageKey = "<your storage account key>"; string inputBlobPath = "adfv2tutorial/"; string inputBlobName = "inputEmp.txt"; // Specify the sink Azure SQL Database information string azureSqlConnString = "Server=tcp:<your server name>.database.windows.net,1433;" + "Database=<your database name>;" + "User ID=<your username>@<your server name>;" + "Password=<your password>;" + "Trusted_Connection=False;Encrypt=True;Connection Timeout=30"; string azureSqlTableName = "dbo.emp"; string storageLinkedServiceName = "AzureStorageLinkedService"; string sqlDbLinkedServiceName = "AzureSqlDbLinkedService"; string blobDatasetName = "BlobDataset"; string sqlDatasetName = "SqlDataset"; string pipelineName = "Adfv2TutorialBlobToSqlCopy";Tambahkan kode berikut pada metode untuk membuat instance kelas
DataFactoryManagementClient. Anda menggunakan objek ini untuk membuat pabrik data, layanan tertaut, himpunan data, dan alur. Anda juga menggunakan obyek ini untuk memantau detail run pipeline.// 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 };
Membuat pabrik data
Tambahkan kode berikut ke Main metode yang membuat pabrik data.
// Create a data factory
Console.WriteLine("Creating a 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);
}
Membuat layanan terhubung
Di tutorial ini, Anda membuat dua layanan tertaut untuk sumber dan sink, masing-masing.
Membuat layanan tertaut Azure Storage
Tambahkan kode berikut ke metode Main yang membuat layanan tertaut Azure Storage. Untuk informasi tentang properti dan detail yang didukung, lihat properti layanan tertaut Azure Blob.
// 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)
);
Buat layanan terhubung Azure SQL Database
Tambahkan kode berikut ke metode Main yang membuat layanan tertaut Azure SQL Database. Untuk informasi tentang properti dan detail yang didukung, lihat properti layanan tertaut Azure SQL Database.
// Create an Azure SQL Database linked service
Console.WriteLine("Creating linked service " + sqlDbLinkedServiceName + "...");
LinkedServiceResource sqlDbLinkedService = new LinkedServiceResource(
new AzureSqlDatabaseLinkedService
{
ConnectionString = new SecureString(azureSqlConnString)
}
);
client.LinkedServices.CreateOrUpdate(
resourceGroup, dataFactoryName, sqlDbLinkedServiceName, sqlDbLinkedService
);
Console.WriteLine(
SafeJsonConvert.SerializeObject(sqlDbLinkedService, client.SerializationSettings)
);
Membuat himpunan data
Di bagian ini, Anda membuat dua himpunan data: satu untuk sumber dan yang lain untuk sink.
Membuat dataset untuk sumber Azure Blob
Tambahkan kode berikut ke metode Main yang membuat himpunan data blob Azure. Untuk informasi tentang properti dan detail yang didukung, lihat properti himpunan data Azure Blob.
Anda menentukan himpunan data yang mewakili data sumber di blob Azure. Himpunan data Blob ini mengacu pada layanan tertaut Azure Storage yang Anda buat di langkah sebelumnya, dan menjelaskan:
- Lokasi blob yang akan disalin dari:
FolderPathdanFileName - Format blob menunjukkan cara memilah konten:
TextFormatdan pengaturannya, seperti pemisah kolom - Struktur data, termasuk nama kolom dan jenis data, yang dipetakan dalam contoh ini ke tabel SQL tujuan.
// Create an Azure Blob dataset
Console.WriteLine("Creating dataset " + blobDatasetName + "...");
DatasetResource blobDataset = new DatasetResource(
new AzureBlobDataset
{
LinkedServiceName = new LinkedServiceReference {
ReferenceName = storageLinkedServiceName
},
FolderPath = inputBlobPath,
FileName = inputBlobName,
Format = new TextFormat { ColumnDelimiter = "|" },
Structure = new List<DatasetDataElement>
{
new DatasetDataElement { Name = "FirstName", Type = "String" },
new DatasetDataElement { Name = "LastName", Type = "String" }
}
}
);
client.Datasets.CreateOrUpdate(
resourceGroup, dataFactoryName, blobDatasetName, blobDataset
);
Console.WriteLine(
SafeJsonConvert.SerializeObject(blobDataset, client.SerializationSettings)
);
Membuat himpunan data untuk Azure SQL Database sink
Tambahkan kode berikut ke metode Main yang membuat himpunan data Azure SQL Database. Untuk informasi tentang properti dan detail yang didukung, lihat properti himpunan data Azure SQL Database.
Anda menentukan himpunan data yang mewakili data sink dalam Azure SQL Database. Himpunan data ini mengacu pada layanan tertaut Azure SQL Database yang Anda buat di langkah sebelumnya. Ini juga menentukan tabel SQL yang menyimpan data yang disalin.
// Create an Azure SQL Database dataset
Console.WriteLine("Creating dataset " + sqlDatasetName + "...");
DatasetResource sqlDataset = new DatasetResource(
new AzureSqlTableDataset
{
LinkedServiceName = new LinkedServiceReference
{
ReferenceName = sqlDbLinkedServiceName
},
TableName = azureSqlTableName
}
);
client.Datasets.CreateOrUpdate(
resourceGroup, dataFactoryName, sqlDatasetName, sqlDataset
);
Console.WriteLine(
SafeJsonConvert.SerializeObject(sqlDataset, client.SerializationSettings)
);
Buat alur
Tambahkan potongan berikut ke metode Main yang membuat pipeline dengan aktivitas yang menyalin. Di tutorial ini, alur ini berisi satu aktivitas: CopyActivity, yang berperan dalam himpunan data Blob sebagai sumber dan himpunan data SQL sebagai sink. Untuk informasi tentang detail copy activity, lihat Copy activity di Azure Data Factory.
// Create a pipeline with copy activity
Console.WriteLine("Creating pipeline " + pipelineName + "...");
PipelineResource pipeline = new PipelineResource
{
Activities = new List<Activity>
{
new CopyActivity
{
Name = "CopyFromBlobToSQL",
Inputs = new List<DatasetReference>
{
new DatasetReference() { ReferenceName = blobDatasetName }
},
Outputs = new List<DatasetReference>
{
new DatasetReference { ReferenceName = sqlDatasetName }
},
Source = new BlobSource { },
Sink = new SqlSink { }
}
}
};
client.Pipelines.CreateOrUpdate(resourceGroup, dataFactoryName, pipelineName, pipeline);
Console.WriteLine(
SafeJsonConvert.SerializeObject(pipeline, client.SerializationSettings)
);
Membuat eksekusi alur
Tambahkan kode berikut ke Main metode yang memicu peluncuran pipeline.
// Create a pipeline run
Console.WriteLine("Creating pipeline run...");
CreateRunResponse runResponse = client.Pipelines.CreateRunWithHttpMessagesAsync(
resourceGroup, dataFactoryName, pipelineName
).Result.Body;
Console.WriteLine("Pipeline run ID: " + runResponse.RunId);
Memantau jalur pipa
Sekarang masukkan kode untuk memeriksa status eksekusi alur dan untuk mendapatkan detail tentang aktivitas salinan yang dijalankan.
Tambahkan kode berikut ke
Mainmetode untuk terus memeriksa status alur hingga selesai menyalin 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; }Tambahkan kode berikut ke metode
Mainyang mengambil rincian eksekusi aktivitas salinan, seperti ukuran data yang dibaca atau ditulis.// 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();
Menjalankan kode
Membangun aplikasi dengan memilih Bangun>Bangun Solusi. Kemudian mulai aplikasi dengan memilih Debug>Mulai mendebug, dan verifikasi eksekusi alur.
Konsol mencetak progres pembuatan pabrik data, layanan tertaut, himpunan data, jalur kerja, dan eksekusi jalur kerja. Kemudian memeriksa status eksekusi pipeline. Tunggu hingga Anda melihat detail pelaksanaan aktivitas salinan dengan menunjukkan ukuran data yang dibaca/ditulis. Kemudian, menggunakan alat seperti SQL Server Management Studio (SSMS) atau Visual Studio, Anda dapat menyambungkan ke Azure SQL Database tujuan Anda dan memeriksa apakah tabel tujuan yang Anda tentukan berisi data yang disalin.
Keluaran Contoh
Creating a data factory AdfV2Tutorial...
{
"identity": {
"type": "SystemAssigned"
},
"location": "East US"
}
Creating linked service AzureStorageLinkedService...
{
"properties": {
"type": "AzureStorage",
"typeProperties": {
"connectionString": {
"type": "SecureString",
"value": "DefaultEndpointsProtocol=https;AccountName=<accountName>;AccountKey=<accountKey>"
}
}
}
}
Creating linked service AzureSqlDbLinkedService...
{
"properties": {
"type": "AzureSqlDatabase",
"typeProperties": {
"connectionString": {
"type": "SecureString",
"value": "Server=tcp:<servername>.database.windows.net,1433;Database=<databasename>;User ID=<username>@<servername>;Password=<password>;Trusted_Connection=False;Encrypt=True;Connection Timeout=30"
}
}
}
}
Creating dataset BlobDataset...
{
"properties": {
"type": "AzureBlob",
"typeProperties": {
"folderPath": "adfv2tutorial/",
"fileName": "inputEmp.txt",
"format": {
"type": "TextFormat",
"columnDelimiter": "|"
}
},
"structure": [
{
"name": "FirstName",
"type": "String"
},
{
"name": "LastName",
"type": "String"
}
],
"linkedServiceName": {
"type": "LinkedServiceReference",
"referenceName": "AzureStorageLinkedService"
}
}
}
Creating dataset SqlDataset...
{
"properties": {
"type": "AzureSqlTable",
"typeProperties": {
"tableName": "dbo.emp"
},
"linkedServiceName": {
"type": "LinkedServiceReference",
"referenceName": "AzureSqlDbLinkedService"
}
}
}
Creating pipeline Adfv2TutorialBlobToSqlCopy...
{
"properties": {
"activities": [
{
"type": "Copy",
"typeProperties": {
"source": {
"type": "BlobSource"
},
"sink": {
"type": "SqlSink"
}
},
"inputs": [
{
"type": "DatasetReference",
"referenceName": "BlobDataset"
}
],
"outputs": [
{
"type": "DatasetReference",
"referenceName": "SqlDataset"
}
],
"name": "CopyFromBlobToSQL"
}
]
}
}
Creating pipeline run...
Pipeline run ID: 1cd03653-88a0-4c90-aabc-ae12d843e252
Checking pipeline run status...
Status: InProgress
Status: InProgress
Status: Succeeded
Checking copy activity run details...
{
"dataRead": 18,
"dataWritten": 28,
"rowsCopied": 2,
"copyDuration": 2,
"throughput": 0.01,
"errors": [],
"effectiveIntegrationRuntime": "DefaultIntegrationRuntime (East US)",
"usedDataIntegrationUnits": 2,
"billedDuration": 2
}
Press any key to exit...
Konten terkait
Alur dalam sampel ini menyalin data dari satu lokasi ke lokasi lain dalam penyimpanan blob Azure. Anda mempelajari cara untuk:
- Membuat pabrik data.
- Buat layanan tertaut Azure Storage dan Azure SQL Database.
- Buat Azure Blob dan himpunan data Azure SQL Database.
- Buat pipeline yang berisi aktivitas menyalin.
- Memulai eksekusi alur.
- Pantau pipeline dan menjalankan aktivitas.
Lanjutkan ke tutorial berikut untuk mempelajari tentang menyalin data dari lokal ke cloud: