- Вопрос или проблема
- Ответ или решение
- Динамическое сопоставление столбцов с помощью вызовов API в Azure Data Factory
- Введение
- Исходная структура
- Подход к проектированию
- 1. Получение метаданных
- 2. Получение данных из файла
- 3. Преобразование данных
- 4. Формирование JSON
- 5. Отправка данных через API
- Заключение
- Рекомендации
Вопрос или проблема
Я пытаюсь разобраться, как лучше всего подойти к проектированию в Data Factory, которым я располагаю. Вкратце:
- Файл представлен в учетной записи хранения
- Каждая строка должна быть отправлена через API Post для внесения в систему. Эта часть уже спроектирована и работает, поэтому её нельзя изменить
- Столбцы файла нужно переименовать так, чтобы они “имели смысл” в системе, которая их потребляет. Например, в файле могут быть
customerID
иcustomerName
, но их нужно назватьCustomer_ID
иCustomer_Name
. Для простоты - Сообщение Json, отправляемое в API, должно формироваться с заголовочной информацией и данными с новыми именами столбцов
У меня есть база данных Metadata Azure SQL PaaD, которая содержит элементы оркестрации конвейеров и любые поздние параметры, чтобы конвейеры могли быть независимыми по своему характеру, например Csv_To_Sql
, а не Import_CustomerX_CSV_TO_MIDB
. В этой базе данных я выставил сопоставления, как описано выше, в таблице, например:
ID | SoureColumnName | DestinationColumnName | PipelineId |
---|---|---|---|
1 | customerID | Customer_ID | 1 |
2 | customerName | Customer_Name | 1 |
Формат Json должен выглядеть примерно так:
{
"HeaderID": "123",
"HeaderCode": "MyCode_123",
"DataPacket": {
"Data": {
"Customer_ID": 1,
"Customer_Name": "Bob"
}
}
}
С учетом того, что метаданные для сопоставлений будут предоставлены во время выполнения конвейера в следующем формате (который я готов изменить):
[
{
"SourceColumn": "customerId",
"DestinationColumn": "Customer_ID"
},
{
"SourceColumn": "customerName",
"DestinationColumn": "Customer_Name"
}
]
Мой конвейер содержит:
- Поиск метаданных
- Поиск файла
- Действие Foreach с элементом
Web Activity
в скелетном варианте
Я думал о том, чтобы использовать Data Flow
, но не знаю, как будет выглядеть такой дизайн, так как раньше я их не использовал.
Ответ или решение
Динамическое сопоставление столбцов с помощью вызовов API в Azure Data Factory
Введение
Ваше задание по интеграции данных с использованием Azure Data Factory (ADF) представляет собой интересную и сложную задачу. У вас есть файл, который необходимо обработать, чтобы изменить названия столбцов и подготовить данные к отправке через API. Давайте рассмотрим, как оптимально спроектировать этот процесс.
Исходная структура
Вы уже имеете определённую архитектуру, включающую синхронизацию метаданных через SQL PaaS, что отражает вашу гибкость в построении рабочих процессов. Ваши данные представляют собой строки в файле, которые необходимо преобразовать и отправить в формате JSON на API. Для этого важно правильно сопоставить названия столбцов на основе имеющейся структуры в вашей метаданных.
Подход к проектированию
1. Получение метаданных
Для начала, используйте Lookup Activity, чтобы извлечь метаданные сопоставлений из вашей базы данных. Это обеспечит гибкость для изменения названий без необходимости модифицировать саму пайплайн-логику в ADF.
2. Получение данных из файла
Следующим шагом будет использование второго Lookup Activity для извлечения данных из файла, который хранится в Azure Storage. Здесь вы можете использовать Get Metadata
для получения необходимой информации.
3. Преобразование данных
Теперь вам необходимо преобразовать данные, чтобы соответствовать динамическим сопоставлениям. Рекомендуется использовать Data Flow, который позволяет проводить преобразования с использованием графического интерфейса.
- Создание Data Flow:
- Добавьте Source, чтобы указать место, откуда будут загружаться данные.
- Затем используйте Select трансформацию для переименования столбцов. Здесь вы можете использовать выражение для динамического сопоставления названий на основе значения, полученного от предыдущего Lookup.
- В качестве следующего шага, добавьте Derived Column, но это не обязательно, так как Select может выполнять необходимые преобразования.
4. Формирование JSON
После преобразования данных вы можете подготовить финальный JSON. В этом случае Data Flow можно дополнить очередным шагом для формирования нужного формата JSON, используя конструкцию Aggregate для группирования данных если потребуется, и затем Mapping для сопоставления структуры JSON.
Пример структуры JSON:
{
"HeaderID": "123",
"HeaderCode": "MyCode_123",
"DataPacket": {
"Data": {
"Customer_ID": 1,
"Customer_Name": "Bob"
}
}
}
5. Отправка данных через API
После формирования JSON, можете воспользоваться ForEach Activity, чтобы обрабатывать каждую запись отдельно. В его рамках добавьте Web Activity, чтобы отправлять каждый пакет данных на указанный API.
Заключение
Данная архитектура обеспечивает гибкость и позволяет динамически адаптировать процесс обработки данных в зависимости от изменения структур и требований. Использование Azure Data Factory в связке с динамическим сопоставлением метаданных открывает новые возможности для интеграции и обработки данных.
Для успешного выполнения данной задачи важно учитывать все элементы и их взаимодействие. Обратите внимание на возможные ошибки при извлечении и преобразовании данных, чтобы избежать неожиданностей на этапе отправки через API.
Рекомендации
- Регулярно обновляйте метаданные и следите за изменениями в исходных данных.
- Рассмотрите возможность использования логирования через Azure Monitor для отслеживания и диагностики функционирования пайплайнов.
Эта структура не только удовлетворяет вашим требованиям, но и обеспечивает стабильность и производительность системы в долгосрочной перспективе.