Каковы необходимые функциональные возможности ETL-фреймворков?

Я пишу ETL (в python с бэкэндом mongodb) и задавался вопросом : какие стандартные функции и инструменты ETL должны называться ETL ?

этот ETL будет как можно более общего назначения, с сценарием и модульным подходом. В основном он будет использоваться для синхронизации разных баз данных и для импорта / экспорта наборов данных в разных форматах (xml и csv) мне не нужны многомерные инструменты, но возможно, что это понадобится позже.

3 ответов


давайте подумаем о случаях использования ETL на мгновение.

  1. экстракт.
    • чтение баз данных через универсальный адаптер DB-API.
    • чтение плоских файлов через аналогичный адаптер.
    • чтение электронных таблиц через аналогичный адаптер.
  2. очистить.
    • произвольные правила
    • фильтр и отклонить
    • заменить
    • добавить столбцы
  3. профиль Данные.
    • статистические таблицы частот.
  4. Transform (см. cleanse, это два варианта использования с одной и той же реализацией)
  5. сделайте поиск соответствия размеров.
    • заменить значения или добавить значения.
  6. совокупности.
    • в любой точке трубопровода
  7. загрузить.
    • или подготовьте плоский файл и запустите продукт DB погрузчик.

кроме того, есть некоторые дополнительные требования, которые не являются единичными случаями использования.

  • каждая отдельная операция должна быть отдельным процессом, который может быть подключен в конвейере Unix, с отдельными записями, протекающими от процесса к процессу. Это использует все ресурсы процессора.

  • вам нужен какой-то планировщик на основе времени для мест, которые имеют проблемы рассуждения их ETL предпосылки.

  • вам нужно расписание на основе событий для мест, которые могут выяснить предварительные условия для шагов обработки ETL.

Примечание. Поскольку ETL связан с вводом / выводом, несколько потоков мало что вам дают. Поскольку каждый процесс выполняется в течение длительного времени, особенно если у вас есть тысячи строк данных процесс -- издержки "тяжелых" процессов не больно.


вот случайный список, в определенном порядке:

  1. подключение к широкому спектру источников, включая все основные реляционные базы данных.
  2. обрабатывать нереляционные источники данных, такие как текстовые файлы, Excel, XML и т. д.
  3. разрешить отображение нескольких источников в одну цель.
  4. предоставьте инструмент, который поможет сопоставить исходные и целевые поля.
  5. предложите рамки для инъекционных преобразований по желанию.
  6. Programmable API для написания сложных преобразований.
  7. оптимизируйте процесс нагрузки для скорости.

автоматическое / эвристическое отображение имен столбцов. Например, простые строковые сопоставления:

DB1: customerId

в DB2: идентификатора customer_id

Я нахожу, что большая часть работы, которую я (сделал) в DTS / SSIS, могла быть автоматически сгенерирована.

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