Примечание.
Для доступа к этой странице требуется авторизация. Вы можете попробовать войти или изменить каталоги.
Для доступа к этой странице требуется авторизация. Вы можете попробовать изменить каталоги.
ПРИМЕНИМО К:
Azure Data Factory
Azure Synapse Analytics
Совет
Data Factory в Microsoft Fabric — это следующее поколение Azure Data Factory с более простой архитектурой, встроенным ИИ и новыми функциями. Если вы не знакомы с интеграцией данных, начните с Fabric Data Factory. Существующие рабочие нагрузки ADF могут обновляться до Fabric для доступа к новым возможностям в области обработки и анализа данных, аналитики в режиме реального времени и отчетов.
В этом руководстве демонстрируется копирование ряда таблиц из Azure SQL Database в Azure Synapse Analytics. Тот же подход можно использовать и в других сценариях копирования. Например, копирование таблиц из SQL Server/Oracle в Azure SQL Database/Data Warehouse/Azure Blob, копирование различных путей из Azure Blob в таблицы Azure SQL Database.
В целом это руководство включает следующие шаги:
- Создали фабрику данных.
- Создание Azure SQL Database, Azure Synapse Analytics и связанных служб Azure Storage.
- Создайте наборы данных Azure SQL Database и Azure Synapse Analytics.
- Создание конвейера для поиска таблиц, которые нужно скопировать, и конвейера для выполнения операции копирования.
- Запуск конвейера.
- Мониторинг конвейера и выполнения действий.
В этом руководстве используется Azure PowerShell. Сведения об использовании других средств или пакетов SDK для создания фабрики данных см. в этом кратком руководстве.
Комплексный рабочий процесс
В этом сценарии у нас есть несколько таблиц в Azure SQL Database, которые мы хотим скопировать в Azure Synapse Analytics. Вот логическая последовательность действий рабочего процесса в конвейерах:
- Первая линия обработки ищет список таблиц, которые необходимо копировать в хранилище данных-приемник. В качестве альтернативы можно создать таблицу метаданных, в которой перечислены все таблицы, которые нужно скопировать в хранилище данных-приемник. Затем конвейер активирует другой конвейер, который выполняет итерацию по каждой таблице базы данных и выполняет операцию копирования данных.
- Второй конвейер выполняет фактическое копирование. Он принимает список таблиц в качестве параметра. Для каждой таблицы в списке скопируйте конкретную таблицу из Azure SQL Database в соответствующую таблицу в Azure Synapse Analytics, используя поэтапное копирование через хранилище Blob и PolyBase для оптимальной производительности. В этом примере первый конвейер передает список таблиц в качестве значения параметра.
Если у вас нет подписки Azure, создайте учетную запись free перед началом работы.
Предварительные требования
Примечание.
Мы рекомендуем использовать модуль Az PowerShell Azure для взаимодействия с Azure. Сведения о начале работы см. в разделе Install Azure PowerShell. Сведения о миграции в модуль Az PowerShell см. в статье Migrate Azure PowerShell из AzureRM в Az.
- Azure PowerShell. Следуйте инструкциям в Как установить и настроить Azure PowerShell.
- учетная запись Azure Storage. Учетная запись Azure Storage используется в качестве промежуточного хранилища BLOB-объектов в операции массового копирования.
- База данных SQL Azure. Эта база данных содержит исходные данные.
- Azure Synapse Analytics. Это хранилище данных содержит данные, копируемые из базы данных SQL.
Подготовка базы данных SQL и Azure Synapse Analytics
Подготовьте исходную базу данных Azure SQL:
Создайте базу данных с данными образца Adventure Works LT в SQL Database, следуя указаниям в статье «Создание базы данных в Azure SQL Database». В этом руководстве копируются все таблицы из этой примерной базы данных в Azure Synapse Analytics.
Подготовка синка Azure Synapse Analytics:
Если у вас нет рабочей области Azure Synapse Analytics, ознакомьтесь со статьей Get started with Azure Synapse Analytics для получения инструкций по её созданию.
Создайте соответствующие схемы таблиц в Azure Synapse Analytics. Вы используете Azure Data Factory для переноса и копирования данных на более поздних шагах.
Службы Azure для доступа к SQL Server
Для базы данных SQL и Azure Synapse Analytics разрешите Azure службам доступ к SQL Server. Убедитесь, что параметр Разрешить доступ к службам Azure включен ВКЛЮЧЕНО для вашего сервера. Этот параметр позволяет службе фабрики данных считывать данные из Azure SQL Database и записывать данные в Azure Synapse Analytics. Чтобы проверить и при необходимости включить этот параметр, сделайте следующее.
- Щелкните Все службы слева и выберите Серверы SQL.
- Выберите сервер и щелкните Брандмауэр в разделе Параметры.
- На странице параметров брандмауэра щелкните Вкл. для разрешения доступа к службам Azure.
Создание фабрики данных
Запустите PowerShell. Не закрывайте Azure PowerShell до конца этого руководства. Если закрыть и снова открыть это окно, то придется вновь выполнять эти команды.
Выполните следующую команду и введите имя пользователя и пароль, которые вы используете для входа на портал Azure:
Connect-AzAccountЧтобы просмотреть все подписки для этой учетной записи, выполните следующую команду:
Get-AzSubscriptionВыполните следующую команду, чтобы выбрать подписку, с которой вы собираетесь работать. Замените SubscriptionId идентификатором подписки Azure:
Select-AzSubscription -SubscriptionId "<SubscriptionId>"Выполните командлет Set-AzDataFactoryV2, чтобы создать фабрику данных. Перед выполнением команды замените заполнители собственными значениями.
$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 $dataFactoryNameОбратите внимание на следующие аспекты:
Имя фабрики данных Azure должно быть глобально уникальным. Если появляется следующая ошибка, измените имя и повторите попытку.
The specified Data Factory name 'ADFv2QuickStartDataFactory' is already in use. Data Factory names must be globally unique.Чтобы создать экземпляры Data Factory, необходимо быть Соавтором или Администратором подписки Azure.
В списке регионов Azure, в которых в настоящее время доступен Data Factory, выберите интересующие вас регионы на следующей странице, а затем разверните раздел Analytics, чтобы найти Data Factory: Продукты, доступные по регионам. Хранилища данных (Azure Storage, Azure SQL Database и т. д.) и вычислительные ресурсы (HDInsight и т. д.), используемые фабрикой данных, могут находиться в других регионах.
Создание связанных служб
В этом руководстве создаются три подключенные службы для исходных данных, конечного хранения и временного хранения, включая подключения к вашим хранилищам данных.
Создайте связанную службу исходной базы данных Azure SQL в качестве источника
Создайте файл JSON с именем AzureSqlDatabaseLinkedService.json в папке C:\ADFv2TutorialBulkCopy и добавьте в него приведенное ниже содержимое. Если папка ADFv2TutorialBulkCopy отсутствует, создайте ее.
Внимание
Замените <servername>, <databasename><username>@<servername> и <password> со значениями Azure SQL Database перед сохранением файла.
{ "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" } } }В Azure PowerShell перейдите в папку ADFv2TutorialBulkCopy.
Выполните командлет Set-AzDataFactoryV2LinkedService, чтобы создать связанную службу: AzureSqlDatabaseLinkedService.
Set-AzDataFactoryV2LinkedService -DataFactoryName $dataFactoryName -ResourceGroupName $resourceGroupName -Name "AzureSqlDatabaseLinkedService" -File ".\AzureSqlDatabaseLinkedService.json"Пример выходных данных:
LinkedServiceName : AzureSqlDatabaseLinkedService ResourceGroupName : <resourceGroupName> DataFactoryName : <dataFactoryName> Properties : Microsoft.Azure.Management.DataFactory.Models.AzureSqlDatabaseLinkedService
Создание связанной службы приемника Azure Synapse Analytics
Создайте файл JSON с именем AzureSqlDWLinkedService.json в папке C:\ADFv2TutorialBulkCopy со следующим содержимым:
Внимание
Замените <servername>, <databasename><username>@<servername> и <password> со значениями Azure SQL Database перед сохранением файла.
{ "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" } } }Чтобы создать связанную службу: AzureSqlDWLinkedService, выполните командлет Set-AzDataFactoryV2LinkedService.
Set-AzDataFactoryV2LinkedService -DataFactoryName $dataFactoryName -ResourceGroupName $resourceGroupName -Name "AzureSqlDWLinkedService" -File ".\AzureSqlDWLinkedService.json"Пример выходных данных:
LinkedServiceName : AzureSqlDWLinkedService ResourceGroupName : <resourceGroupName> DataFactoryName : <dataFactoryName> Properties : Microsoft.Azure.Management.DataFactory.Models.AzureSqlDWLinkedService
Создайте стейджинговую связанную службу Azure Storage
В этом руководстве вы используете Azure Blob-хранилище в качестве промежуточной области для включения PolyBase с целью улучшения производительности копирования.
Создайте файл JSON с именем AzureStorageLinkedService.json в папке C:\ADFv2TutorialBulkCopy со следующим содержимым:
Внимание
Замените <accountName> и <accountKey> именем и ключом учетной записи хранения Azure перед сохранением файла.
{ "name": "AzureStorageLinkedService", "properties": { "type": "AzureStorage", "typeProperties": { "connectionString": "DefaultEndpointsProtocol=https;AccountName=<accountName>;AccountKey=<accountKey>" } } }Чтобы создать связанную службу AzureStorageLinkedService, выполните командлет Set-AzDataFactoryV2LinkedService.
Set-AzDataFactoryV2LinkedService -DataFactoryName $dataFactoryName -ResourceGroupName $resourceGroupName -Name "AzureStorageLinkedService" -File ".\AzureStorageLinkedService.json"Пример выходных данных:
LinkedServiceName : AzureStorageLinkedService ResourceGroupName : <resourceGroupName> DataFactoryName : <dataFactoryName> Properties : Microsoft.Azure.Management.DataFactory.Models.AzureStorageLinkedService
Создайте наборы данных.
В этом руководстве создаются наборы данных источника и приемника, в которых указывается место хранения данных:
Создание набора данных для исходной базы данных SQL
Создайте файл JSON с именем AzureSqlDatabaseDataset.json в папке C:\ADFv2TutorialBulkCopy со следующим содержимым. TableName является фиктивным,так как позже в действии копирования будет использован SQL-запрос для извлечения данных.
{ "name": "AzureSqlDatabaseDataset", "properties": { "type": "AzureSqlTable", "linkedServiceName": { "referenceName": "AzureSqlDatabaseLinkedService", "type": "LinkedServiceReference" }, "typeProperties": { "tableName": "dummy" } } }Чтобы создать набор данных AzureSqlDatabaseDataset, запустите cmdlet Set-AzDataFactoryV2Dataset.
Set-AzDataFactoryV2Dataset -DataFactoryName $dataFactoryName -ResourceGroupName $resourceGroupName -Name "AzureSqlDatabaseDataset" -File ".\AzureSqlDatabaseDataset.json"Пример выходных данных:
DatasetName : AzureSqlDatabaseDataset ResourceGroupName : <resourceGroupname> DataFactoryName : <dataFactoryName> Structure : Properties : Microsoft.Azure.Management.DataFactory.Models.AzureSqlTableDataset
Создание набора данных для приемника Azure Synapse Analytics
Создайте файл JSON с именем AzureSqlDWDataset.json в папке C:\ADFv2TutorialBulkCopy со следующим содержимым: tableName задается в качестве параметра, позже действие копирования, которое ссылается на этот набор данных, передает фактическое значение в набор данных.
{ "name": "AzureSqlDWDataset", "properties": { "type": "AzureSqlDWTable", "linkedServiceName": { "referenceName": "AzureSqlDWLinkedService", "type": "LinkedServiceReference" }, "typeProperties": { "tableName": { "value": "@{dataset().DWTableName}", "type": "Expression" } }, "parameters":{ "DWTableName":{ "type":"String" } } } }Чтобы создать набор данных: AzureSqlDWDataset, выполните командлет Set-AzDataFactoryV2Dataset .
Set-AzDataFactoryV2Dataset -DataFactoryName $dataFactoryName -ResourceGroupName $resourceGroupName -Name "AzureSqlDWDataset" -File ".\AzureSqlDWDataset.json"Пример выходных данных:
DatasetName : AzureSqlDWDataset ResourceGroupName : <resourceGroupname> DataFactoryName : <dataFactoryName> Structure : Properties : Microsoft.Azure.Management.DataFactory.Models.AzureSqlDwTableDataset
Создание конвейеров
В этом руководстве создаются два конвейера:
Создайте конвейер "IterateAndCopySQLTables"
Этот конвейер принимает список таблиц в качестве параметра. Для каждой таблицы в списке данные из таблицы в Azure SQL Database копируются в Azure Synapse Analytics с помощью промежуточного копирования и PolyBase.
Создайте файл JSON с именем IterateAndCopySQLTables.json в папке C:\ADFv2TutorialBulkCopy со следующим содержимым:
{ "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" } } } }Чтобы создать конвейер: IterateAndCopySQLTables, выполните командлет Set-AzDataFactoryV2Pipeline.
Set-AzDataFactoryV2Pipeline -DataFactoryName $dataFactoryName -ResourceGroupName $resourceGroupName -Name "IterateAndCopySQLTables" -File ".\IterateAndCopySQLTables.json"Пример выходных данных:
PipelineName : IterateAndCopySQLTables ResourceGroupName : <resourceGroupName> DataFactoryName : <dataFactoryName> Activities : {IterateSQLTables} Parameters : {[tableList, Microsoft.Azure.Management.DataFactory.Models.ParameterSpecification]}
Создайте конвейер GetTableListAndTriggerCopyData
Этот конвейер выполняет два действия:
- Ищет системную таблицу Azure SQL Database, чтобы получить список таблиц для копирования.
- Активирует конвейер IterateAndCopySQLTables для выполнения копирования данных.
Создайте файл JSON с именем GetTableListAndTriggerCopyData.json в папке C:\ADFv2TutorialBulkCopy со следующим содержимым:
{ "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" ] } ] } ] } }Для того чтобы создать конвейер GetTableListAndTriggerCopyData, выполните командлет Set-AzDataFactoryV2Pipeline.
Set-AzDataFactoryV2Pipeline -DataFactoryName $dataFactoryName -ResourceGroupName $resourceGroupName -Name "GetTableListAndTriggerCopyData" -File ".\GetTableListAndTriggerCopyData.json"Пример выходных данных:
PipelineName : GetTableListAndTriggerCopyData ResourceGroupName : <resourceGroupName> DataFactoryName : <dataFactoryName> Activities : {LookupTableList, TriggerCopy} Parameters :
Запуск и мониторинг выполнения конвейера
Запустите выполнение главного конвейера GetTableListAndTriggerCopyData и запишите идентификатор выполнения конвейера для будущего мониторинга. Впоследствии запускается выполнение конвейера "IterateAndCopySQLTables", как предусмотрено в действии ExecutePipeline.
$runId = Invoke-AzDataFactoryV2Pipeline -DataFactoryName $dataFactoryName -ResourceGroupName $resourceGroupName -PipelineName 'GetTableListAndTriggerCopyData'Выполните следующий скрипт, чтобы постоянно проверять состояние выполнения конвейера GetTableListAndTriggerCopyData и вывести конечный результат выполнения конвейера и операции.
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" $resultВот результат примера выполнения:
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}Вы можете получить идентификатор выполнения конвейера IterateAndCopySQLTables и просмотреть подробный результат выполнения действия, как показано ниже.
Write-Host "Pipeline 'IterateAndCopySQLTables' run result:" -ForegroundColor "Yellow" ($result | Where-Object {$_.ActivityName -eq "TriggerCopy"}).Output.ToString()Вот результат примера выполнения:
{ "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) $result2Подключитесь к приемнику Azure Synapse Analytics и убедитесь, что данные правильно скопированы из Azure SQL Database.
Связанный контент
В этом руководстве вы выполнили следующие шаги:
- Создали фабрику данных.
- Создание Azure SQL Database, Azure Synapse Analytics и связанных служб Azure Storage.
- Создайте наборы данных Azure SQL Database и Azure Synapse Analytics.
- Создание конвейера для поиска таблиц, которые нужно скопировать, и конвейера для выполнения операции копирования.
- Запуск конвейера.
- Мониторинг конвейера и выполнения действий.
Перейдите к следующему руководству, чтобы узнать о копировании данных по шагам из источника в место назначения: