Poznámka:
Přístup k této stránce vyžaduje autorizaci. Můžete se zkusit přihlásit nebo změnit adresáře.
Přístup k této stránce vyžaduje autorizaci. Můžete zkusit změnit adresáře.
VZTAHUJE SE NA:
Azure Data Factory
Azure Synapse Analytics
Tip
Data Factory v Microsoft Fabric je nová generace Azure Data Factory s jednodušší architekturou, integrovanou AI a novými funkcemi. Pokud s integrací dat začínáte, začněte Fabric Data Factory. Stávající úlohy ADF lze upgradovat na Fabric pro přístup k novým funkcím v oblastech datové vědy, analýz v reálném čase a vytváření sestav.
V tomto kurzu vytvoříte kanál služby Data Factory, který kopíruje data z Azure Blob Storage do Azure SQL Database. Schéma konfigurace v tomto kurzu se vztahuje na kopírování z úložiště dat založeného na souborech do relačního úložiště dat. Seznam úložišť dat podporovaných jako zdroje a jímky najdete v podporovaných úložištích a formátech dat.
V tomto kurzu provedete následující kroky:
- Vytvoření datové továrny
- Vytvořte propojené služby Azure Storage a Azure SQL Database.
- Vytvořte datové sady Azure Blob a Azure SQL Database.
- Vytvořit kanál obsahující kopírovací aktivitu.
- Zahajte spuštění potrubí.
- Monitorujte kanál a běhy aktivit.
V tomto kurzu se používá sada .NET SDK. Další mechanismy můžete použít k interakci s Azure Data Factory; odkazovat na ukázky v části Quickstarts.
Pokud nemáte předplatné Azure, vytvořte si účet free Azure než začnete.
Požadavky
- Účet služby Azure Storage. Úložiště objektů blob použijete jako zdrojové úložiště dat. Pokud účet úložiště Azure nemáte, přečtěte si téma Vytvoření účtu úložiště pro obecné účely.
- Azure SQL Database. Tuto databázi použijete jako úložiště dat jímky. Pokud databázi v Azure SQL Database nemáte, podívejte se na Vytvoření databáze v Azure SQL Database.
- Visual Studio. Návod v tomto článku používá Visual Studio 2019.
- Azure SDK pro .NET.
- aplikace Microsoft Entra Pokud nemáte Microsoft Entra aplikaci, přečtěte si část Vytvoření aplikace Microsoft Entra části How: Vytvoření aplikace Microsoft Entra pomocí portálu. Zkopírujte následující hodnoty pro pozdější použití: ID aplikace (klienta), ověřovací klíč a ID adresáře (tenanta). Podle pokynů ve stejném článku přiřaďte aplikaci k roli Přispěvatel .
Vytvoření objektu blob a tabulky SQL
Teď připravte knihovnu Azure Blob a databázi Azure SQL pro ukázku vytvořením zdrojového bloku Blob a cílové tabulky SQL.
Vytvořit zdrojový objekt blob
Nejprve vytvořte zdrojový objekt blob tak, že vytvoříte kontejner a nahrajete do něj vstupní textový soubor:
Otevřete Poznámkový blok. Zkopírujte následující text a uložte ho místně do souboru s názvem inputEmp.txt.
John|Doe Jane|DoePomocí nástroje, jako je Průzkumník služby Azure Storage, vytvořte kontejner adfv2tutorial a nahrajte do něj soubor inputEmp.txt.
Vytvořte cílovou SQL tabulku
Dále vytvořte tabulku SQL jímky:
Pomocí následujícího skriptu SQL vytvořte v Azure SQL Database tabulku dbo.emp.
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);Povolte Azure službám přístup ke službě SQL Database. Ujistěte se, že na serveru povolíte přístup ke službám Azure, aby služba Data Factory mohla zapisovat data do služby SQL Database. Pokud chcete toto nastavení ověřit a zapnout, proveďte následující kroky:
Přejděte na portál Azure a spravujte sql server. Vyhledejte a vyberte SQL servery.
Vyberte server.
V části Zabezpečení nabídky SQL Serveru vyberte Firewally a virtuální sítě.
Na stránce Firewall a virtuální sítě v části Volit Azure služby a prostředky pro přístup k tomuto serveru vyberte ON.
Vytvoření projektu Visual Studio
Pomocí Visual Studio vytvořte konzolovou aplikaci .NET jazyka C#.
- Otevřete Visual Studio.
- V okně Start vyberte Vytvořit nový projekt.
- V okně Vytvořit nový projekt zvolte v seznamu typů projektů verzi jazyka C# Console App (.NET Framework). Pak vyberte Další.
- V okně Konfigurujte nový projekt zadejte název projektuADFv2Tutorial. V části Umístění přejděte do adresáře nebo vytvořte adresář pro uložení projektu. Pak vyberte Vytvořit. Nový projekt se zobrazí v Visual Studio – sada IDE.
Instalace balíčků NuGet
Dále nainstalujte požadované balíčky knihovny pomocí správce balíčků NuGet.
V řádku nabídek zvolte Tools>NuGet Správce balíčků>Správce balíčků Console.
V podokně Správce balíčků Konzola spusťte následující příkazy pro instalaci balíčků. Informace o balíčku NuGet Azure Data Factory najdete v tématu Microsoft.Azure. Management.DataFactory.
Install-Package Microsoft.Azure.Management.DataFactory Install-Package Microsoft.Azure.Management.ResourceManager -PreRelease Install-Package Microsoft.IdentityModel.Clients.ActiveDirectory
Vytvořte klienta datové továrny
Postupujte podle těchto kroků k vytvoření klienta pro datovou továrnu.
Otevřete Program.cs a přepište existující
usingpříkazy následujícím kódem a přidejte odkazy na obory názvů.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;Do metody, která nastavuje proměnné, přidejte následující kód
Main. Nahraďte 14 zástupných symbolů vlastními hodnotami.Seznam Azure oblastí, ve kterých je služba Data Factory aktuálně dostupná, najdete v tématu Products available by region. V rozevíracím seznamu Produkty zvolte Procházet>Analytics>Data Factory. Potom v rozevíracím seznamu Oblasti vyberte oblasti, které vás zajímají. Zobrazí se mřížka se stavem dostupnosti produktů Data Factory pro vybrané oblasti.
Poznámka:
Úložiště dat, jako jsou Azure Storage a Azure SQL Database, a také výpočetní zdroje, jako je HDInsight, které Data Factory používá, mohou být umístěny v jiných oblastech než samotná služba 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";Do metody, která vytvoří instanci
Maintřídy, přidejte následující kódDataFactoryManagementClient. Tento objekt použijete k vytvoření datové továrny, propojené služby, datových sad a kanálu. Použijete ho také k monitorování podrobných informací o spuštění kanálu.// 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 };
Vytvoření datové továrny
Do metody, která vytvoří datovou továrnuMain, přidejte následující kód.
// 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);
}
Vytvoření propojených služeb
V tomto kurzu vytvoříte dvě propojené služby pro zdroj a jímku v uvedeném pořadí.
Vytvoření propojené služby Azure Storage
Do metody Main přidejte následující kód, který vytvoří propojenou službu Azure Storage. Informace o podporovaných vlastnostech a podrobnostech najdete v tématu vlastnosti služby Azure Blob propojené služby.
// 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)
);
Vytvoření propojené služby Azure SQL Database
Do metody Main přidejte následující kód, který vytvoří propojenou službu Azure SQL Database. Informace o podporovaných vlastnostech a podrobnostech najdete v tématu vlastnosti propojení služby 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)
);
Vytvoření datových sad
V této části vytvoříte dvě datové sady: jednu pro zdroj, druhou pro jímku.
Vytvořit datovou sadu pro zdroj Azure Blob
Do metody Main přidejte následující kód, který vytvoří datovou sadu objektů blob Azure. Informace o podporovaných vlastnostech a podrobnostech naleznete v tématu Vlastnosti datové sady Azure Blob.
Definujete datovou sadu, která představuje data zdroje ve službě Azure Blob. Tato datová sada objektů blob odkazuje na Azure Storage propojenou službu, kterou vytvoříte v předchozím kroku, a popisuje:
- Umístění objektu blob, ze kterého se má kopírovat:
FolderPathFileName - Formát objektu blob označující, jak analyzovat obsah:
TextFormata jeho nastavení, například oddělovač sloupců - Datová struktura, včetně názvů sloupců a datových typů, které se v tomto příkladu mapují na cílovou SQL tabulku
// 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)
);
Vytvoření datové sady pro Azure SQL Database jímky
Do metody Main přidejte následující kód, který vytvoří datovou sadu Azure SQL Database. Informace o podporovaných vlastnostech a podrobnostech najdete v tématu Azure SQL Database vlastnosti datové sady.
Definujete datovou sadu, která představuje data jímky v Azure SQL Database. Tato datová sada odkazuje na Azure SQL Database propojenou službu, kterou jste vytvořili v předchozím kroku. Určuje také tabulku SQL, který obsahuje zkopírovaná data.
// 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)
);
Vytvořit kanál
Do metody Main, která vytvoří kanál s aktivitou kopírování, přidejte následující kód. V tomto kurzu tento kanál obsahuje jednu aktivitu: CopyActivity, která přebírá datovou sadu objektů blob jako zdroj a datovou sadu SQL jako jímku. Informace o podrobnostech copy activity najdete v tématu aktivita Copy v 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)
);
Vytvořte spuštění úlohy
Do metody Main, která spouští běh kanálu, přidejte následující kód .
// 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);
Monitorování spuštění kanálu
Teď vložte kód pro kontrolu stavů běhu pipeline a získání podrobností o běhu aktivity kopírování.
Do metody
Mainpřidejte následující kód, který bude průběžně kontrolovat stavy běhu kanálu, dokud neskončí kopírování dat.// 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; }Do metody, která načte podrobnosti o spuštění aktivity kopírování, například velikost načtených nebo zapsaných dat, přidejte následující
Mainkód.// 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();
Spuštění kódu
Sestavte aplikaci tak, že zvolíte Build>Build Solution. Pak spusťte aplikaci výběrem možnosti Ladit>Spustit ladění a ověřte spuštění pipeline.
Konzola vytiskne průběh vytváření datové továrny, propojené služby, datových sad, potrubí a spuštění potrubí. Potom zkontroluje stav spuštění kanálu. Počkejte, až se zobrazí podrobnosti o spuštění aktivity kopírování s velikostí čtení a zápisu dat. Potom pomocí nástrojů, jako jsou SQL Server Management Studio (SSMS) nebo Visual Studio, se můžete připojit k cílovému Azure SQL Database a zkontrolovat, jestli zadaná cílová tabulka obsahuje zkopírovaná data.
Ukázkový výstup
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...
Související obsah
Datový kanál v tomto příkladu kopíruje data z jednoho umístění do jiného umístění v úložišti Azure Blob. Naučili jste se:
- Vytvoření datové továrny
- Vytvořte propojené služby Azure Storage a Azure SQL Database.
- Vytvořte datové sady Azure Blob a Azure SQL Database.
- Vytvořte kanál obsahující aktivitu kopírování.
- Zahajte spuštění potrubí.
- Monitorujte kanál a běhy aktivit.
Pokud se chcete dozvědět víc o kopírování dat z místního prostředí do cloudu, přejděte k následujícímu kurzu: