Megjegyzés
Az oldalhoz való hozzáféréshez engedély szükséges. Megpróbálhat bejelentkezni vagy módosítani a címtárat.
Az oldalhoz való hozzáféréshez engedély szükséges. Megpróbálhatja módosítani a címtárat.
Vonatkozik:
Azure Data Factory
Azure Synapse Analytics
Tipp
Ebben az oktatóanyagban létrehoz egy Data Factory-pipeline-t, amely adatokat másol az Azure Blob Storage-ből az Azure SQL Database-be. Az oktatóanyagban szereplő konfigurációs minta fájlalapú adattárból relációs adattárba való másolásra vonatkozik. A forrásként és fogadóként támogatott adattárak listáját a támogatott adattárak és formátumok című témakörben találja.
Ebben az oktatóanyagban a következő lépéseket kell elvégeznie:
- Adat-előállító létrehozása
- Azure Storage és Azure SQL Database kapcsolt szolgáltatások létrehozása.
- Hozzon létre Azure blobokat és Azure SQL Database adatkészleteket.
- Hozzon létre egy folyamatláncot, amely tartalmaz egy másolási tevékenységet.
- Folyamat futásának indítása
- A folyamatok és tevékenységek futásának figyelemmel kísérése
Ez az oktatóanyag .NET SDK-t használ. Az Azure Data Factory-val egyéb mechanizmusokat is igénybe vehet, hivatkozzon a mintákra a Quickstart részben.
Ha nem rendelkezik Azure előfizetéssel, a kezdés előtt hozzon létre egy free Azure fiókot.
Előfeltételek
- Azure Storage fiók. A blobtárolót használjuk forrás adattárként. Ha nincs Azure tárfiókja, tekintse meg A tárfiók létrehozása című témakört.
- Azure SQL Database. Ezt az adatbázist használjuk fogadó adattárként. Ha nem rendelkezik adatbázissal Azure SQL Database, tekintse meg a Adatbázis létrehozása Azure SQL Database.
- Visual Studio. A cikkben szereplő lépésről-lépésre ismertető a Visual Studio 2019-et használja.
- Azure SDK .NET.
- Microsoft Entra alkalmazás. Ha nem rendelkezik Microsoft Entra alkalmazással, tekintse meg a A Microsoft Entra alkalmazás létrehozásaHogyan is: Microsoft Entra alkalmazás létrehozása a portálon. Másolja ki a következő értékeket a későbbi lépésekben való használathoz: alkalmazás-(ügyfél-) azonosító, hitelesítési kulcs és címtár-(bérlői) azonosító. Rendelje hozzá az alkalmazást a közreműködői szerepkörhöz az ugyanabban a cikkben található utasításokat követve.
Blob és SQL-tábla létrehozása
Most készítse elő a Azure Blobot és Azure SQL Database az oktatóanyaghoz egy forrásblob és egy fogadó SQL-tábla létrehozásával.
Forrás blob létrehozása
Először hozzon létre egy forrásblobot egy tároló létrehozásával és egy bemeneti szövegfájl feltöltésével:
Nyissa meg a Jegyzettömbet. Másolja ki a következő szöveget, és mentse helyileg egy inputEmp.txt nevű fájlba.
John|Doe Jane|DoeA adfv2tutorial tároló létrehozásához és a inputEmp.txt fájl feltöltéséhez használja a Azure Storage Explorer eszközt.
Fogadó SQL-tábla létrehozása
Ezután hozzon létre egy fogadó SQL-táblát:
A következő SQL-szkripttel hozza létre a dbo.emp táblát a Azure SQL Database.
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);Az SQL Database elérésének engedélyezése Azure szolgáltatások számára. Győződjön meg arról, hogy engedélyezi Azure szolgáltatások elérését a kiszolgálón, hogy a Data Factory szolgáltatás adatokat írjon az SQL Database-be. A beállítás ellenőrzéséhez és bekapcsolásához hajtsa végre a következő lépéseket:
Lépjen a Azure portálra az SQL Server kezeléséhez. SQL-kiszolgálók keresése és kiválasztása.
Válassza ki a kiszolgálót.
Az SQL Server menü Biztonsági fejlécében válassza a Tűzfalak és virtuális hálózatok lehetőséget.
A Firewall és a virtuális hálózatok lapon, a A kiszolgáló eléréséhez szükséges Azure szolgáltatások és erőforrások területen válassza a ON lehetőséget.
Visual Studio-projekt létrehozása
A Visual Studio használatával hozzon létre egy C# .NET konzolalkalmazást.
- Nyissa meg a Visual Studio.
- A Start ablakban válassza az Új projekt létrehozása lehetőséget.
- A Új projekt létrehozása ablakban válassza ki a Console App (.NET Framework) C#-verzióját a projekttípusok listájából. Ezután válassza a Tovább gombot.
- A új projektjének konfigurálása ablakban adja meg a projekt nevét: ADFv2Tutorial. A Hely kiválasztásához böngésszen a könyvtárban, vagy hozzon létre egy újat a projekt mentéséhez. Válassza a Létrehozás parancsot. Az új projekt megjelenik az IDE környezetében a Visual Studio-ban.
NuGet-csomagok telepítése
Ezután telepítse a szükséges kódtárcsomagokat a NuGet-csomagkezelővel.
A menüsávon válassza a Tools>NuGet Csomagkezelő>Csomagkezelő Konzol lehetőséget.
A Csomagkezelő Konzol panelen futtassa a következő parancsokat a csomagok telepítéséhez. Az Azure Data Factory NuGet-csomagról további információt a Microsoft.Azure.Management.DataFactory oldalon talál.
Install-Package Microsoft.Azure.Management.DataFactory Install-Package Microsoft.Azure.Management.ResourceManager -PreRelease Install-Package Microsoft.IdentityModel.Clients.ActiveDirectory
Adat-előállító ügyfél létrehozása
Data Factory-ügyfél létrehozásához kövesse az alábbi lépéseket.
Nyissa meg a Program.cs, majd írja felül a meglévő
usingutasításokat a következő kóddal a névterekre mutató hivatkozások hozzáadásához.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;Adja hozzá a következő kódot a
Mainváltozókat állító metódushoz. Cserélje le a 14 helyőrzőt a saját értékeire.Azoknak a Azure régióknak a listáját, amelyekben a Data Factory jelenleg elérhető, tekintse meg Régiónként elérhető termékek. A Termékek legördülő listában válassza a Browse>Analytics>Data Factory lehetőséget. Ezután a Régiók legördülő listában válassza ki az Önt érdeklő régiókat. Megjelenik egy rács a kiválasztott régiókHoz tartozó Data Factory-termékek rendelkezésre állási állapotával.
Megjegyzés
A Data Factory által használt adattárak, például a Azure Storage és a Azure SQL Database, valamint a Data Factory által használt számítások, például a HDInsight, más régiókban is lehetnek, mint a Data Factory által választott adatok.
// 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";Adja hozzá a következő kódot a
DataFactoryManagementClientosztály példányát létrehozóMainmetódushoz. Ezzel az objektummal adat-előállítót, társított szolgáltatást, adatkészleteket és folyamatot hozhat létre. Ezenfelül ez az objektum a folyamat futása részleteinek monitorozására is használható.// 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 };
Adat-előállító létrehozása
Adja hozzá a következő kódot az Main adat-előállítót létrehozó metódushoz.
// 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);
}
Társított szolgáltatások létrehozása
Ebben az oktatóanyagban két társított szolgáltatást hoz létre a forráshoz és a fogadóhoz.
Azure Storage társított szolgáltatás létrehozása
Adja hozzá a következő kódot a Main metódushoz, amely létrehoz egy Azure Storage társított szolgáltatást. A támogatott tulajdonságokról és részletekről további információt a Azure Blob társított szolgáltatás tulajdonságai című témakörben talál.
// 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)
);
Azure SQL Database társított szolgáltatás létrehozása
Adja hozzá a következő kódot a Main metódushoz, amely létrehoz egy Azure SQL Database társított szolgáltatást. A támogatott tulajdonságokról és részletekről további információt a Azure SQL Database társított szolgáltatás tulajdonságai című témakörben talál.
// 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)
);
Adatkészletek létrehozása
Ebben a szakaszban két adatkészletet hoz létre: egyet a forráshoz, a másikat a fogadóhoz.
Adatkészlet létrehozása a forrás Azure Blobhoz
Adja hozzá a következő kódot a Main metódushoz, amely létrehoz egy Azure blobadatkészletet. A támogatott tulajdonságokról és részletekről a Azure Blob-adathalmaz tulajdonságai című témakörben olvashat.
Definiálhat egy adatkészletet, amely a Azure Blob forrásadatait jelöli. Ez a Blob-adatkészlet az előző lépésben létrehozott Azure Storage társított szolgáltatásra hivatkozik, és a következőket írja le:
- A másolandó blob helye:
FolderPathésFileName - A tartalom elemzését jelző blobformátum:
TextFormatés annak beállításai, például az oszlopelválasztó - Az adatstruktúra, beleértve az oszlopneveket és az adattípusokat, amelyek ebben a példában a fogadó SQL-táblára képeznek le
// 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)
);
Adatkészlet létrehozása cél Azure SQL Database számára
Adja hozzá a következő kódot a Main metódushoz, amely létrehoz egy Azure SQL Database adatkészletet. A támogatott tulajdonságokról és részletekről a Azure SQL Database adathalmaz tulajdonságai című témakörben olvashat.
Definiálhat egy adatkészletet, amely a fogadó adatait jelöli a Azure SQL Database. Ez az adatkészlet az előző lépésben létrehozott Azure SQL Database társított szolgáltatásra hivatkozik. Emellett megadja a másolt adatokat tartalmazó SQL-táblázatot is.
// 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)
);
Folyamat létrehozása
Adja hozzá a következő kódot ahhoz a metódushoz, amely egy másolási tevékenységet tartalmazó folyamatot hoz létre. Ebben az oktatóanyagban ez a folyamat egyetlen tevékenységet tartalmaz: CopyActivity, amely a Blob-adathalmazt forrásként, az SQL-adathalmazt pedig célként kezeli. A másolási tevékenység részleteiről az "Azure Data Factory másolási tevékenység" című témakörben talál további információt.
// 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)
);
Folyamatlánc indítása
Adja hozzá a következő kódot a Main folyamatfuttatást kiváltó metódushoz.
// 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);
Csővezeték futásának ellenőrzése
Most szúrja be a kódot a folyamatfuttatási állapotok ellenőrzéséhez és a másolási tevékenység futtatásának részleteinek lekéréséhez.
Adja hozzá a következő kódot a metódushoz a
Mainfolyamatfuttatás állapotának folyamatos ellenőrzéséhez, amíg be nem fejeződik az adatok másolása.// 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; }Adja hozzá a következő kódot a
Mainmásolási tevékenység futtatásának részleteit lekérő metódushoz, például az olvasott vagy írott adatok méretéhez.// 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();
A kód futtatása
Az alkalmazás összeállítása a Build>Megoldás összeállítása lehetőség kiválasztásával. Ezután indítsa el az alkalmazást a Hibakeresés>Indítása kiválasztásával, és ellenőrizze a folyamat végrehajtását.
A konzol megjeleníti az adatgyár, a kapcsolódó szolgáltatás, az adatkészletek, a folyamat, valamint a pipeline futásának létrehozási állapotát. Ezután ellenőrzi a pipeline futási állapotát. Várjon, amíg meg nem jelennek a másolási tevékenység részletei az olvasott/írt adatok méretével. Ezután olyan eszközökkel, mint a SQL Server Management Studio (SSMS) vagy a Visual Studio, csatlakozhat a cél Azure SQL Database, és ellenőrizheti, hogy a megadott céltábla tartalmazza-e a másolt adatokat.
Példakimenet
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...
Kapcsolódó tartalom
A mintafolyamat adatokat másol egy Azure blobtároló egyik helyére. Megtanulta végrehajtani az alábbi műveleteket:
- Adat-előállító létrehozása
- Azure Storage és Azure SQL Database kapcsolt szolgáltatások létrehozása.
- Hozzon létre Azure blobokat és Azure SQL Database adatkészleteket.
- Adatfolyam létrehozása, amely másolási tevékenységet tartalmaz.
- Folyamat futásának indítása
- A folyamatok és tevékenységek futásának figyelemmel kísérése
Folytassa a következő oktatóanyaggal, amelyben azzal ismerkedhet meg, hogyan másolhat adatokat a helyszíni rendszerből a felhőbe: