Массовое копирование из базы данных с использованием контрольной таблицы

Область применения:Фабрика данных Azure Azure Synapse Analytics

Совет

Попробуйте использовать фабрику данных в Microsoft Fabric, решение для аналитики с одним интерфейсом для предприятий. Microsoft Fabric охватывает все, от перемещения данных до обработки и анализа данных в режиме реального времени, бизнес-аналитики и отчетности. Узнайте, как бесплатно запустить новую пробную версию !

Чтобы скопировать данные из хранилища данных Oracle Server, Netezza, Teradata или SQL Server в Azure Synapse Analytics, необходимо загрузить огромное количество данных из нескольких таблиц. Обычно данные должны быть разделены в каждой таблице, чтобы можно было загружать строки из одной таблицы с использованием нескольких параллельных потоков. В этой статье описывается шаблон для этих сценариев.

Примечание.

Если вы хотите скопировать данные из небольшого числа таблиц с относительно небольшим объемом данных в Azure Synapse Analytics, эффективнее использовать средство копирования данных "Фабрика данных Azure". Шаблон, описанный в этой статье, рекомендуется для большого объема данных.

Информация о шаблоне решения

Этот шаблон получает список секций базы данных-источника для копирования из внешней контрольной таблицы. Затем он выполняет итерацию по каждой секции в базе данных-источнике и копирует данные в место назначения.

Шаблон состоит из трех действий.

  • Действие Lookup извлекает список всех секций базы данных из внешней контрольной таблицы.
  • Действие ForEach получает список секций из действия Lookup и выполняет итерацию каждой секции для действия Copy.
  • Действие Copy копирует каждую секцию из базы данных-источника в целевое хранилище.

Ниже описаны параметры, которые определяет шаблон:

  • Control_Table_Name — это внешняя контрольная таблица, в которой хранится список секций для базы данных-источника.
  • Control_Table_Schema_PartitionID — имя столбца внешней контрольной таблицы, в котором хранятся идентификаторы всех секций. Убедитесь, что идентификатор секции уникален для каждой секции в базе данных-источнике.
  • Control_Table_Schema_SourceTableName — внешняя контрольная таблица, в которой хранятся имена всех таблиц базы данных-источника.
  • Control_Table_Schema_FilterQuery — это имя столбца внешней контрольной таблицы, в котором хранятся запросы на фильтрацию. Они получают данные из каждой секции базы данных-источника. Например, если разделить данные по годам, запрос, хранящийся в каждой строке, может быть похож на select * from datasource, где LastModifytime >= ''2015-01-01 00:00:00'' and LastModifytime <= ''2015-12-31 23:59:59.999''.
  • Data_Destination_Folder_Path — это путь, по которому данные копируются в целевое хранилище (применимо, если выбрано значение "Файловая система" или "Azure Data Lake Storage 1-го поколения").
  • Data_Destination_Folder_Path — это путь к корневой папке, в которой находится целевое хранилище, куда копируются данные.
  • Data_Destination_Directory — это путь к каталогу в корневой папке, в которой находится целевое хранилище, куда копируются данные.

Последние три параметра, определяющие путь в целевом хранилище, отображаются только в том случае, если выбранное назначение является хранилищем на основе файлов. Если в качестве целевого хранилища вы выбрали Azure Synapse Analytics, эти параметры не требуются. Однако имена таблиц и схема Azure Synapse Analytics должны совпадать с именами таблиц и схемой базы данных-источника.

Использование шаблона решения

  1. Создайте контрольную таблицу в SQL Server или базе данных SQL Azure, чтобы хранить там список секций базы данных-источника для массового копирования. В следующем примере вы видите пять секций в базе данных-источнике. Три секции предназначены для datasource_table, а две — для project_table. Столбец LastModifytime используется для разделения данных в таблице datasource_table из базы данных-источника. Запрос, который считывает первую секцию, выглядит следующим образом: select * from datasource_table где LastModifytime >= ''2015-01-01 00:00:00'' и LastModifytime <= ''2015-12-31 23:59:59.999''. Вы можете использовать аналогичный запрос для считывания данных из других секций.

     		Create table ControlTableForTemplate
     		(
     		PartitionID int,
     		SourceTableName  varchar(255),
     		FilterQuery varchar(255)
     		);
    
     		INSERT INTO ControlTableForTemplate
     		(PartitionID, SourceTableName, FilterQuery)
     		VALUES
     		(1, 'datasource_table','select * from datasource_table where LastModifytime >= ''2015-01-01 00:00:00'' and LastModifytime <= ''2015-12-31 23:59:59.999'''),
     		(2, 'datasource_table','select * from datasource_table where LastModifytime >= ''2016-01-01 00:00:00'' and LastModifytime <= ''2016-12-31 23:59:59.999'''),
     		(3, 'datasource_table','select * from datasource_table where LastModifytime >= ''2017-01-01 00:00:00'' and LastModifytime <= ''2017-12-31 23:59:59.999'''),
     		(4, 'project_table','select * from project_table where ID >= 0 and ID < 1000'),
     		(5, 'project_table','select * from project_table where ID >= 1000 and ID < 2000');
    
  2. Перейдите к шаблону Массовое копирование из базы данных. Выберите Создать, чтобы установить подключение к внешней контрольной таблице, сформированной на шаге 1.

    Screenshot showing the creation of a new connection to the control table.

  3. Выберите Создать, чтобы создать подключение к базе данных-источнику, из которой вы копируете данные.

    Screenshot showing the creation of a new connection to the source database.

  4. Выберите Создать, чтобы создать подключение к целевой базе данных, в которую вы копируете данные.

    Screenshot showing the creation of a new connection to the destination store.

  5. Выберите Использовать этот шаблон.

  6. Откроется конвейер, как показано в следующем примере:

    Screenshot showing the pipeline.

  7. Выберите Отладка, введите Параметры, а затем нажмите Готово.

    Screenshot showing the Debug button.

  8. Вы увидите результат, аналогичный приведенному ниже:

    Screenshot showing the result of the pipeline run.

  9. (Необязательно.) Если в качестве назначения данных выбрано Azure Synapse Analytics, необходимо ввести подключение к хранилищу BLOB-объектов Azure для промежуточного хранения в соответствии с требованиями Azure Synapse Analytics Polybase. Шаблон автоматически создаст путь к контейнеру для хранилища BLOB-объектов. Проверьте, создан ли контейнер, после выполнения конвейера.

    Screenshot showing the Polybase setting.