Лучшие практики для параметризации загрузки нескольких файлов CSV в фабрике данных - PullRequest
1 голос
/ 31 мая 2019

Я экспериментирую с фабрикой данных Azure, чтобы заменить некоторые другие решения для загрузки данных, которые у нас есть в настоящее время, и я пытаюсь найти лучший способ организации и параметризации конвейеров для обеспечения необходимой масштабируемости.

Наш типичный шаблон заключается в том, что мы создаем интеграцию для конкретной платформы.Эта «интеграция», по сути, является отображением и преобразованием полей из их файлов данных (CSV) в нашу базу данных SQL Stage1, и к тому времени, когда данные окажутся там, типы данных должны быть правильно установлены и индексы установлены.

На каждой платформе у нас есть клиенты.У каждого Клиента есть свой набор файлов данных, которые обрабатываются в контексте этого Клиента - в рамках Платформы все файлы Клиента следуют одной и той же схеме (или близки к ней), но все они отправляются нам отдельно.Если вы посмотрите на наше хранилище входящих файлов, оно может выглядеть следующим образом (упрощенно, для каждого клиента имеется 20-30 наборов исходных данных в зависимости от платформы):

  1. Платформа
    1. Клиент A
      1. Employees.csv
      2. PayPeriods.csv
      3. и т. Д.
    2. Клиент B
      1. Employees.csv
      2. PayPeriods.csv
      3. и т. Д.

Каждый клиент получает свою собственную схему SQL.Таким образом, после обработки выше, у меня должны быть таблицы CustomerA.Employees и CustomerB.Employees.(Это позволяет немного дрейфовать схемы между клиентами, что происходит на некоторых платформах. Мы обращаемся с этим позже в нашем процессе ETL стадии 2.)

Я пытаюсь выяснить:

Каков наилучший способ настройки ADF, чтобы я мог эффективно управлять одним набором сопоставлений на платформу и автоматически приспосабливать новых клиентов, которых мы добавляем к этой платформе, без необходимости изменять конвейер / поток?

MyВ настоящее время предполагается, что для каждой платформы требуется один конвейер, а для каждой платформы - один поток данных.Конвейер имеет переменную "schemaname", которая задается с помощью пути к файлу, который ее вызвал (например, "CustomerA").Затем, в зависимости от имени файла, существует условное ветвление, которое запустит правильный поток данных.Например, если это «employee.csv», он запускает один поток данных, если это «payperiods.csv», он загружает другой поток данных.Кроме того, все они будут использовать один и тот же общий источник данных целевого приемника, параметризованное имя таблицы и те параметры, которые будут установлены в конвейере с использованием переменной схемы и имени файла из условной ветви.

Есть ли подводные камни?чтобы настроить это таким образом?Я правильно об этом думаю?

1 Ответ

0 голосов
/ 03 июня 2019

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

Способы защиты от этого в потоке данных ADF - использование шаблонов столбцов. Это позволит вам определять отображения, которые являются общими и более гибкими.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...