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

ПРИМЕНИМО К: Фабрика данных Azure Azure Synapse Analytics

Совет

Data Factory в Microsoft Fabric — это следующее поколение Фабрика данных Azure с упрощенной архитектурой, встроенным искусственным интеллектом и новыми функциями. Если вы не знакомы с интеграцией данных, начните с Fabric Data Factory. Существующие рабочие нагрузки ADF могут обновляться до Fabric для доступа к новым возможностям в области обработки и анализа данных, аналитики в режиме реального времени и отчетов.

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

Примечание.

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

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

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

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

  • Действие Lookup извлекает список всех секций базы данных из внешней контрольной таблицы.
  • ForEach получает список разделов из действия поиска и передает каждый раздел в действие копирования.
  • Действие 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_Container — это корневой путь, куда данные копируются в вашем целевом хранилище.
  • 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.

    Снимок экрана: создание нового подключения к таблице управления.

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

    Снимок экрана: создание нового подключения к исходной базе данных.

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

    Снимок экрана: создание нового подключения к целевому хранилищу.

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

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

    Снимок экрана: конвейер.

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

    Снимок экрана: кнопка отладки.

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

    Снимок экрана, показывающий результат выполнения конвейера.

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

    Снимок экрана: параметр Polybase.