Каковы требуемые функциональные возможности структур ETL? - PullRequest
11 голосов
/ 24 августа 2009

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

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

Ответы [ 3 ]

16 голосов
/ 24 августа 2009

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

  1. Extract.
    • Чтение баз данных через универсальный адаптер DB-API.
    • Чтение плоских файлов через аналогичный адаптер.
    • Чтение таблиц через аналогичный адаптер.
  2. Cleanse.
    • Произвольные правила
    • Отфильтровать и отклонить
    • Заменить
    • Добавить столбцы данных
  3. Данные профиля.
    • Статистические таблицы частот.
  4. Transform (см. Cleanse, это два варианта использования с одинаковой реализацией)
  5. Выполните поиск соответствия размеров.
    • Заменить значения или добавить значения.
  6. Совокупный.
    • В любой точке трубопровода
  7. Load.
    • Или подготовьте простой файл и запустите загрузчик продукта БД.

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

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

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

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

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

4 голосов
/ 24 августа 2009

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

  1. Подключение к широкому кругу источников, включая все основные реляционные базы данных.
  2. Обработка нереляционных источников данных, таких как текстовые файлы, Excel, XML и т. Д.
  3. Разрешить сопоставление нескольких источников в одной цели.
  4. Предоставьте инструмент, помогающий сопоставить исходные и целевые поля.
  5. Предложить основу для внедрения преобразований по желанию.
  6. Программируемый API для написания сложных преобразований.
  7. Оптимизировать процесс загрузки для скорости.
0 голосов
/ 24 августа 2009

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

DB1: customerId

DB2: customer_id

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

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