Массовое копирование из базы данных с использованием контрольной таблицы
ОБЛАСТЬ ПРИМЕНЕНИЯ: Фабрика данных 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 должны совпадать с именами таблиц и схемой базы данных-источника.
Использование шаблона решения
Создайте контрольную таблицу в 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');
Перейдите к шаблону Массовое копирование из базы данных. Выберите Создать, чтобы установить подключение к внешней контрольной таблице, сформированной на шаге 1.
Выберите Создать, чтобы создать подключение к базе данных-источнику, из которой вы копируете данные.
Выберите Создать, чтобы создать подключение к целевой базе данных, в которую вы копируете данные.
Выберите Использовать этот шаблон.
Откроется конвейер, как показано в следующем примере:
Выберите Отладка, введите Параметры, а затем нажмите Готово.
Вы увидите результат, аналогичный приведенному ниже:
(Необязательно.) Если в качестве назначения данных выбрано Azure Synapse Analytics, необходимо ввести подключение к хранилищу BLOB-объектов Azure для промежуточного хранения в соответствии с требованиями Azure Synapse Analytics Polybase. Шаблон автоматически создаст путь к контейнеру для хранилища BLOB-объектов. Проверьте, создан ли контейнер, после выполнения конвейера.