Каковы необходимые функциональные возможности ETL-фреймворков?
Я пишу ETL (в python с бэкэндом mongodb) и задавался вопросом : какие стандартные функции и инструменты ETL должны называться ETL ?
этот ETL будет как можно более общего назначения, с сценарием и модульным подходом. В основном он будет использоваться для синхронизации разных баз данных и для импорта / экспорта наборов данных в разных форматах (xml и csv) мне не нужны многомерные инструменты, но возможно, что это понадобится позже.
3 ответов
давайте подумаем о случаях использования ETL на мгновение.
- экстракт.
- чтение баз данных через универсальный адаптер DB-API.
- чтение плоских файлов через аналогичный адаптер.
- чтение электронных таблиц через аналогичный адаптер.
- очистить.
- произвольные правила
- фильтр и отклонить
- заменить
- добавить столбцы
- профиль Данные.
- статистические таблицы частот.
- Transform (см. cleanse, это два варианта использования с одной и той же реализацией)
- сделайте поиск соответствия размеров.
- заменить значения или добавить значения.
- совокупности.
- в любой точке трубопровода
- загрузить.
- или подготовьте плоский файл и запустите продукт DB погрузчик.
кроме того, есть некоторые дополнительные требования, которые не являются единичными случаями использования.
каждая отдельная операция должна быть отдельным процессом, который может быть подключен в конвейере Unix, с отдельными записями, протекающими от процесса к процессу. Это использует все ресурсы процессора.
вам нужен какой-то планировщик на основе времени для мест, которые имеют проблемы рассуждения их ETL предпосылки.
вам нужно расписание на основе событий для мест, которые могут выяснить предварительные условия для шагов обработки ETL.
Примечание. Поскольку ETL связан с вводом / выводом, несколько потоков мало что вам дают. Поскольку каждый процесс выполняется в течение длительного времени, особенно если у вас есть тысячи строк данных процесс -- издержки "тяжелых" процессов не больно.
вот случайный список, в определенном порядке:
- подключение к широкому спектру источников, включая все основные реляционные базы данных.
- обрабатывать нереляционные источники данных, такие как текстовые файлы, Excel, XML и т. д.
- разрешить отображение нескольких источников в одну цель.
- предоставьте инструмент, который поможет сопоставить исходные и целевые поля.
- предложите рамки для инъекционных преобразований по желанию.
- Programmable API для написания сложных преобразований.
- оптимизируйте процесс нагрузки для скорости.
автоматическое / эвристическое отображение имен столбцов. Например, простые строковые сопоставления:
DB1: customerId
в DB2: идентификатора customer_id
Я нахожу, что большая часть работы, которую я (сделал) в DTS / SSIS, могла быть автоматически сгенерирована.
- не обязательно "требуемая функциональность", но будет держать многих ваших пользователей очень счастливыми.