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.
Tento kurz demonstruje kopírování řady tabulek z Azure SQL Database do Azure Synapse Analytics. Stejný vzor můžete využít i u dalších scénářů kopírování. Například kopírování tabulek z SQL Server/Oracle do Azure SQL Database/Data Warehouse/Azure Blob a kopírování různých cest z objektů blob do tabulek Azure SQL Database.
Tento kurz zahrnuje následující základní kroky:
- Vytvoření datové továrny
- Vytváření propojených služeb Azure SQL Database, Azure Synapse Analytics a Azure Storage
- Vytváření Azure SQL Database a Azure Synapse Analytics datových sad
- Vytvoření kanálu pro vyhledání tabulek ke zkopírování a dalšího kanálu pro provedení vlastní operace kopírování
- Zahajte spuštění potrubí.
- Monitorujte kanál a běhy aktivit.
Tento kurz používá Azure PowerShell. Další informace o zřízení datové továrny pomocí jiných nástrojů nebo SDK najdete v tématu Rychlé Starty.
Kompletní pracovní tok
V tomto scénáři máme v Azure SQL Database několik tabulek, které chceme zkopírovat do Azure Synapse Analytics. Tady je logická posloupnost kroků pracovního postupu, které probíhají v potrubích:
- První kanál vyhledá seznam tabulek, které je potřeba zkopírovat do úložišť dat jímky. Další možností je udržovat tabulku metadat se seznamem všech tabulek, které je potřeba zkopírovat do úložišť dat jímky. Kanál potom aktivuje jiný kanál, který postupně prochází všechny tabulky v databázi a provádí operaci kopírování dat.
- Tento druhý kanál provádí vlastní kopírování. Jako parametr používá seznam tabulek. Pro každou tabulku v seznamu zkopírujte konkrétní tabulku v Azure SQL Database do odpovídající tabulky v Azure Synapse Analytics pomocí staged copy prostřednictvím úložiště objektů blob a PolyBase pro zajištění nejlepšího výkonu. V tomto příkladu první kanál předá seznam tabulek jako hodnotu parametru.
Pokud nemáte předplatné Azure, vytvořte si účet free před tím, než začnete.
Požadavky
Poznámka:
K interakci s Azure doporučujeme použít modul Azure Az PowerShell. Pokud chcete začít, přečtěte si téma Install Azure PowerShell. Informace o migraci do modulu Az PowerShell najdete v tématu Migrace Azure PowerShell z AzureRM do Az.
- Azure PowerShell. Postupujte podle pokynů v Jak nainstalovat a nakonfigurovat Azure PowerShell.
- Účet služby Azure Storage. Účet Azure Storage se používá jako dočasné úložiště objektů blob v operaci hromadného kopírování.
- Azure SQL Database. Tato databáze obsahuje zdrojová data.
- Azure Synapse Analytics. Tento datový sklad obsahuje data zkopírovaná z SQL Database.
Připravte SQL Database a Azure Synapse Analytics
Připravení zdrojového Azure SQL Database:
Vytvořte databázi s ukázkovými daty Adventure Works LT ve službě SQL Database podle Vytvoření databáze v článku Azure SQL Database. Tento kurz zkopíruje všechny tabulky z této ukázkové databáze do Azure Synapse Analytics.
Připravujte jímku Azure Synapse Analytics:
Pokud nemáte pracovní prostor Azure Synapse Analytics, přečtěte si článek Začínáme s Azure Synapse Analytics, kde najdete pokyny k jeho vytvoření.
Vytvořte odpovídající schémata tabulky v Azure Synapse Analytics. K migraci a kopírování dat v pozdějším kroku použijete Azure Data Factory.
Azure služby pro přístup k SQL Serveru
Povolte službám Azure přístup k SQL serveru pro SQL Database a Azure Synapse Analytics. Ujistěte se, že je nastavení Povolit přístup ke službám Azure nastaveno na ZAPNUTO pro váš server. Toto nastavení umožňuje službě Data Factory číst data z vašeho Azure SQL Database a zapisovat data do Azure Synapse Analytics. Pokud chcete toto nastavení ověřit a zapnout, proveďte následující kroky:
- Klikněte na Všechny služby na levé straně a pak klikněte na Servery SQL.
- Vyberte svůj server a v části NASTAVENÍ klikněte na Brána firewall.
- Na stránce nastavení Firewall klikněte na ON pro >Volit přístup ke službám Azure.
Vytvoření datové továrny
Spusťte PowerShell. Nechte Azure PowerShell otevřené až do konce tohoto kurzu. Pokud ho zavřete a znovu otevřete, bude potřeba tyto příkazy spustit znovu.
Spusťte následující příkaz a zadejte uživatelské jméno a heslo, které používáte pro přihlášení k portálu Azure:
Connect-AzAccountSpuštěním následujícího příkazu zobrazíte všechna předplatná pro tento účet:
Get-AzSubscriptionSpuštěním následujícího příkazu vyberte předplatné, se kterým chcete pracovat. Nahraďte SubscriptionId ID vašeho předplatného Azure:
Select-AzSubscription -SubscriptionId "<SubscriptionId>"Spuštěním rutiny Set-AzDataFactoryV2 vytvořte datovou továrnu. Před spuštěním tohoto příkazu zástupné znaky nahraďte vlastními hodnotami.
$resourceGroupName = "<your resource group to create the factory>" $dataFactoryName = "<specify the name of data factory to create. It must be globally unique.>" Set-AzDataFactoryV2 -ResourceGroupName $resourceGroupName -Location "East US" -Name $dataFactoryNameMějte na paměti následující body:
Název Azure datové továrny musí být globálně jedinečný. Pokud se zobrazí následující chyba, změňte název a zkuste to znovu.
The specified Data Factory name 'ADFv2QuickStartDataFactory' is already in use. Data Factory names must be globally unique.Pokud chcete vytvářet instance služby Data Factory, musíte být přispěvatelem nebo správcem předplatného Azure.
Seznam Azure oblastí, ve kterých je služba Data Factory aktuálně dostupná, vyberte oblasti, které vás zajímají, na následující stránce a rozbalte Analytics a vyhledejte Data Factory: Products available by region. Úložiště dat (Azure Storage, Azure SQL Database atd.) a výpočty (HDInsight atd.) používané datovými továrnami můžou být v jiných oblastech.
Vytvoření propojených služeb
V tomto kurzu vytvoříte tři propojené služby pro zdrojový, jímkový a pracovní blob, které zahrnují připojení k vašim úložištím dat.
Vytvořte propojenou službu zdrojové Azure SQL databáze
Vytvořte soubor JSON s názvem AzureSqlDatabaseLinkedService.json ve složce C:\ADFv2TutorialBulkCopy s následujícím obsahem. (Pokud složka \ADFv2TutorialBulkCopy ještě neexistuje, vytvořte ji.)
Důležité
Nahraďte <servername>, <databasename>, <username>@<servername> a <password> s hodnotami Azure SQL Database před uložením souboru.
{ "name": "AzureSqlDatabaseLinkedService", "properties": { "type": "AzureSqlDatabase", "typeProperties": { "connectionString": "Server=tcp:<servername>.database.windows.net,1433;Database=<databasename>;User ID=<username>@<servername>;Password=<password>;Trusted_Connection=False;Encrypt=True;Connection Timeout=30" } } }V Azure PowerShell přepněte do složky ADFv2TutorialBulkCopy.
Spuštěním rutiny Set-AzDataFactoryV2LinkedService vytvořte propojenou službu: AzureSqlDatabaseLinkedService.
Set-AzDataFactoryV2LinkedService -DataFactoryName $dataFactoryName -ResourceGroupName $resourceGroupName -Name "AzureSqlDatabaseLinkedService" -File ".\AzureSqlDatabaseLinkedService.json"Tady je ukázkový výstup:
LinkedServiceName : AzureSqlDatabaseLinkedService ResourceGroupName : <resourceGroupName> DataFactoryName : <dataFactoryName> Properties : Microsoft.Azure.Management.DataFactory.Models.AzureSqlDatabaseLinkedService
Vytvořte propojenou službu Azure Synapse Analytics jako cílový uzel.
Ve složce C:\ADFv2TutorialBulkCopy vytvořte soubor JSON s názvem AzureSqlDWLinkedService.json s následujícím obsahem:
Důležité
Nahraďte <servername>, <databasename>, <username>@<servername> a <password> s hodnotami Azure SQL Database před uložením souboru.
{ "name": "AzureSqlDWLinkedService", "properties": { "type": "AzureSqlDW", "typeProperties": { "connectionString": "Server=tcp:<servername>.database.windows.net,1433;Database=<databasename>;User ID=<username>@<servername>;Password=<password>;Trusted_Connection=False;Encrypt=True;Connection Timeout=30" } } }Pokud chcete vytvořit propojenou službu: AzureSqlDWLinkedService, spusťte rutinu Set-AzDataFactoryV2LinkedService .
Set-AzDataFactoryV2LinkedService -DataFactoryName $dataFactoryName -ResourceGroupName $resourceGroupName -Name "AzureSqlDWLinkedService" -File ".\AzureSqlDWLinkedService.json"Tady je ukázkový výstup:
LinkedServiceName : AzureSqlDWLinkedService ResourceGroupName : <resourceGroupName> DataFactoryName : <dataFactoryName> Properties : Microsoft.Azure.Management.DataFactory.Models.AzureSqlDWLinkedService
Vytvořte propojenou službu typu staging pro Azure Storage
V tomto kurzu použijete Azure Blob Storage jako dočasnou pracovní oblast, abyste polyBase umožnili lepší výkon kopírování.
Ve složce C:\ADFv2TutorialBulkCopy vytvořte soubor JSON s názvem AzureStorageLinkedService.json s následujícím obsahem:
Důležité
Před uložením souboru nahraďte <accountName> a <accountKey> názvem a klíčem účtu úložiště Azure.
{ "name": "AzureStorageLinkedService", "properties": { "type": "AzureStorage", "typeProperties": { "connectionString": "DefaultEndpointsProtocol=https;AccountName=<accountName>;AccountKey=<accountKey>" } } }Pokud chcete vytvořit propojenou službu: AzureStorageLinkedService, spusťte rutinu Set-AzDataFactoryV2LinkedService .
Set-AzDataFactoryV2LinkedService -DataFactoryName $dataFactoryName -ResourceGroupName $resourceGroupName -Name "AzureStorageLinkedService" -File ".\AzureStorageLinkedService.json"Tady je ukázkový výstup:
LinkedServiceName : AzureStorageLinkedService ResourceGroupName : <resourceGroupName> DataFactoryName : <dataFactoryName> Properties : Microsoft.Azure.Management.DataFactory.Models.AzureStorageLinkedService
Vytvoření datových sad
V tomto kurzu vytvoříte zdrojovou datovou sadu a datovou sadu jímky, které určují umístění pro uložení dat:
Vytvoření datové sady pro zdrojovou databázi SQL Database
Ve složce C:\ADFv2TutorialBulkCopy vytvořte soubor JSON s názvem AzureSqlDatabaseDataset.json s následujícím obsahem. TableName je jenom fiktivní, protože později k načtení dat v aktivitě kopírování použijete dotaz SQL.
{ "name": "AzureSqlDatabaseDataset", "properties": { "type": "AzureSqlTable", "linkedServiceName": { "referenceName": "AzureSqlDatabaseLinkedService", "type": "LinkedServiceReference" }, "typeProperties": { "tableName": "dummy" } } }Pokud chcete vytvořit datovou sadu: AzureSqlDatabaseDataset, spusťte rutinu Set-AzDataFactoryV2Dataset .
Set-AzDataFactoryV2Dataset -DataFactoryName $dataFactoryName -ResourceGroupName $resourceGroupName -Name "AzureSqlDatabaseDataset" -File ".\AzureSqlDatabaseDataset.json"Tady je ukázkový výstup:
DatasetName : AzureSqlDatabaseDataset ResourceGroupName : <resourceGroupname> DataFactoryName : <dataFactoryName> Structure : Properties : Microsoft.Azure.Management.DataFactory.Models.AzureSqlTableDataset
Vytvoření datové sady pro Azure Synapse Analytics jímky
Ve složce C:\ADFv2TutorialBulkCopy vytvořte soubor JSON s názvem AzureSqlDWDataset.json s následujícím obsahem. TableName se nastavuje jako parametr. Aktivita kopírování, která odkazuje na tuto datovou sadu, později datové sadě předá skutečnou hodnotu.
{ "name": "AzureSqlDWDataset", "properties": { "type": "AzureSqlDWTable", "linkedServiceName": { "referenceName": "AzureSqlDWLinkedService", "type": "LinkedServiceReference" }, "typeProperties": { "tableName": { "value": "@{dataset().DWTableName}", "type": "Expression" } }, "parameters":{ "DWTableName":{ "type":"String" } } } }Pokud chcete vytvořit datovou sadu: AzureSqlDWDataset, spusťte rutinu Set-AzDataFactoryV2Dataset .
Set-AzDataFactoryV2Dataset -DataFactoryName $dataFactoryName -ResourceGroupName $resourceGroupName -Name "AzureSqlDWDataset" -File ".\AzureSqlDWDataset.json"Tady je ukázkový výstup:
DatasetName : AzureSqlDWDataset ResourceGroupName : <resourceGroupname> DataFactoryName : <dataFactoryName> Structure : Properties : Microsoft.Azure.Management.DataFactory.Models.AzureSqlDwTableDataset
Vytvoření kanálů
V tomto kurzu vytvoříte dva kanály:
Vytvoření kanálu IterateAndCopySQLTables
Tento kanál jako parametr používá seznam tabulek. Pro každou tabulku v seznamu kopíruje data z tabulky v Azure SQL Database do Azure Synapse Analytics pomocí fázované kopie a PolyBase.
Ve složce C:\ADFv2TutorialBulkCopy vytvořte soubor JSON s názvem IterateAndCopySQLTables.json s následujícím obsahem.
{ "name": "IterateAndCopySQLTables", "properties": { "activities": [ { "name": "IterateSQLTables", "type": "ForEach", "typeProperties": { "isSequential": "false", "items": { "value": "@pipeline().parameters.tableList", "type": "Expression" }, "activities": [ { "name": "CopyData", "description": "Copy data from Azure SQL Database to Azure Synapse Analytics", "type": "Copy", "inputs": [ { "referenceName": "AzureSqlDatabaseDataset", "type": "DatasetReference" } ], "outputs": [ { "referenceName": "AzureSqlDWDataset", "type": "DatasetReference", "parameters": { "DWTableName": "[@{item().TABLE_SCHEMA}].[@{item().TABLE_NAME}]" } } ], "typeProperties": { "source": { "type": "SqlSource", "sqlReaderQuery": "SELECT * FROM [@{item().TABLE_SCHEMA}].[@{item().TABLE_NAME}]" }, "sink": { "type": "SqlDWSink", "preCopyScript": "TRUNCATE TABLE [@{item().TABLE_SCHEMA}].[@{item().TABLE_NAME}]", "allowPolyBase": true }, "enableStaging": true, "stagingSettings": { "linkedServiceName": { "referenceName": "AzureStorageLinkedService", "type": "LinkedServiceReference" } } } } ] } } ], "parameters": { "tableList": { "type": "Object" } } } }Pokud chcete vytvořit kanál: IterateAndCopySQLTables, spusťte rutinu Set-AzDataFactoryV2Pipeline .
Set-AzDataFactoryV2Pipeline -DataFactoryName $dataFactoryName -ResourceGroupName $resourceGroupName -Name "IterateAndCopySQLTables" -File ".\IterateAndCopySQLTables.json"Tady je ukázkový výstup:
PipelineName : IterateAndCopySQLTables ResourceGroupName : <resourceGroupName> DataFactoryName : <dataFactoryName> Activities : {IterateSQLTables} Parameters : {[tableList, Microsoft.Azure.Management.DataFactory.Models.ParameterSpecification]}
Vytvoření kanálu GetTableListAndTriggerCopyData
Tento kanál provádí dva kroky:
- Vyhledá systémovou tabulku Azure SQL Database a získá seznam tabulek, které se mají zkopírovat.
- Aktivuje kanál IterateAndCopySQLTables, který provede vlastní kopírování dat.
Ve složce C:\ADFv2TutorialBulkCopy vytvořte soubor JSON s názvem GetTableListAndTriggerCopyData.json s následujícím obsahem.
{ "name":"GetTableListAndTriggerCopyData", "properties":{ "activities":[ { "name": "LookupTableList", "description": "Retrieve the table list from Azure SQL database", "type": "Lookup", "typeProperties": { "source": { "type": "SqlSource", "sqlReaderQuery": "SELECT TABLE_SCHEMA, TABLE_NAME FROM information_schema.TABLES WHERE TABLE_TYPE = 'BASE TABLE' and TABLE_SCHEMA = 'SalesLT' and TABLE_NAME <> 'ProductModel'" }, "dataset": { "referenceName": "AzureSqlDatabaseDataset", "type": "DatasetReference" }, "firstRowOnly": false } }, { "name": "TriggerCopy", "type": "ExecutePipeline", "typeProperties": { "parameters": { "tableList": { "value": "@activity('LookupTableList').output.value", "type": "Expression" } }, "pipeline": { "referenceName": "IterateAndCopySQLTables", "type": "PipelineReference" }, "waitOnCompletion": true }, "dependsOn": [ { "activity": "LookupTableList", "dependencyConditions": [ "Succeeded" ] } ] } ] } }Pokud chcete vytvořit kanál: GetTableListAndTriggerCopyData, spusťte rutinu Set-AzDataFactoryV2Pipeline .
Set-AzDataFactoryV2Pipeline -DataFactoryName $dataFactoryName -ResourceGroupName $resourceGroupName -Name "GetTableListAndTriggerCopyData" -File ".\GetTableListAndTriggerCopyData.json"Tady je ukázkový výstup:
PipelineName : GetTableListAndTriggerCopyData ResourceGroupName : <resourceGroupName> DataFactoryName : <dataFactoryName> Activities : {LookupTableList, TriggerCopy} Parameters :
Spusťte a sledujte běh kanálu
Zahajte běh pipeline pro hlavní kanál "GetTableListAndTriggerCopyData" a zaznamenejte ID běhu pipeline pro budoucí monitorování. V pozadí se aktivuje spuštění kanálu IterateAndCopySQLTables, jak určuje aktivita ExecutePipeline.
$runId = Invoke-AzDataFactoryV2Pipeline -DataFactoryName $dataFactoryName -ResourceGroupName $resourceGroupName -PipelineName 'GetTableListAndTriggerCopyData'Spusťte následující skript pro nepřetržitou kontrolu stavu spuštění kanálu GetTableListAndTriggerCopyData a vytiskněte finální výsledek spuštění kanálů a spuštění aktivit.
while ($True) { $run = Get-AzDataFactoryV2PipelineRun -ResourceGroupName $resourceGroupName -DataFactoryName $DataFactoryName -PipelineRunId $runId if ($run) { if ($run.Status -ne 'InProgress') { Write-Host "Pipeline run finished. The status is: " $run.Status -ForegroundColor "Yellow" Write-Host "Pipeline run details:" -ForegroundColor "Yellow" $run break } Write-Host "Pipeline is running...status: InProgress" -ForegroundColor "Yellow" } Start-Sleep -Seconds 15 } $result = Get-AzDataFactoryV2ActivityRun -DataFactoryName $dataFactoryName -ResourceGroupName $resourceGroupName -PipelineRunId $runId -RunStartedAfter (Get-Date).AddMinutes(-30) -RunStartedBefore (Get-Date).AddMinutes(30) Write-Host "Activity run details:" -ForegroundColor "Yellow" $resultZde je výstup tohoto ukázkového spuštění:
Pipeline run details: ResourceGroupName : <resourceGroupName> DataFactoryName : <dataFactoryName> RunId : 0000000000-00000-0000-0000-000000000000 PipelineName : GetTableListAndTriggerCopyData LastUpdated : 9/18/2017 4:08:15 PM Parameters : {} RunStart : 9/18/2017 4:06:44 PM RunEnd : 9/18/2017 4:08:15 PM DurationInMs : 90637 Status : Succeeded Message : Activity run details: ResourceGroupName : <resourceGroupName> DataFactoryName : <dataFactoryName> ActivityName : LookupTableList PipelineRunId : 0000000000-00000-0000-0000-000000000000 PipelineName : GetTableListAndTriggerCopyData Input : {source, dataset, firstRowOnly} Output : {count, value, effectiveIntegrationRuntime} LinkedServiceName : ActivityRunStart : 9/18/2017 4:06:46 PM ActivityRunEnd : 9/18/2017 4:07:09 PM DurationInMs : 22995 Status : Succeeded Error : {errorCode, message, failureType, target} ResourceGroupName : <resourceGroupName> DataFactoryName : <dataFactoryName> ActivityName : TriggerCopy PipelineRunId : 0000000000-00000-0000-0000-000000000000 PipelineName : GetTableListAndTriggerCopyData Input : {pipeline, parameters, waitOnCompletion} Output : {pipelineRunId} LinkedServiceName : ActivityRunStart : 9/18/2017 4:07:11 PM ActivityRunEnd : 9/18/2017 4:08:14 PM DurationInMs : 62581 Status : Succeeded Error : {errorCode, message, failureType, target}Můžete získat ID spuštění potrubí "IterateAndCopySQLTables" a zkontrolovat podrobný výsledek spuštění aktivity.
Write-Host "Pipeline 'IterateAndCopySQLTables' run result:" -ForegroundColor "Yellow" ($result | Where-Object {$_.ActivityName -eq "TriggerCopy"}).Output.ToString()Zde je výstup tohoto ukázkového spuštění:
{ "pipelineRunId": "7514d165-14bf-41fb-b5fb-789bea6c9e58" }$result2 = Get-AzDataFactoryV2ActivityRun -DataFactoryName $dataFactoryName -ResourceGroupName $resourceGroupName -PipelineRunId <copy above run ID> -RunStartedAfter (Get-Date).AddMinutes(-30) -RunStartedBefore (Get-Date).AddMinutes(30) $result2Připojte se k jímce Azure Synapse Analytics a ověřte, že se data z Azure SQL Database zkopírovala správně.
Související obsah
V tomto kurzu jste provedli následující kroky:
- Vytvoření datové továrny
- Vytváření propojených služeb Azure SQL Database, Azure Synapse Analytics a Azure Storage
- Vytváření Azure SQL Database a Azure Synapse Analytics datových sad
- Vytvoření kanálu pro vyhledání tabulek ke zkopírování a dalšího kanálu pro provedení vlastní operace kopírování
- Zahajte spuštění potrubí.
- Monitorujte kanál a běhy aktivit.
Pokud se chcete dozvědět víc o přírůstkovém kopírování ze zdroje do cíle, přejděte k následujícímu kurzu: