Для тех кто думает про инструменты трансформации данных и не готов/не хочет/не может использовать Dbt и подход ELT есть немало инструментов с открытым кодом, как ручных, так и автоматизированных.
- Optimus [1] библиотека для универсализации преобразования данных через Python, интегрированная с Pandas, Dusk и другими инструментами. Для тех кто выстраивает цепочки изменений на Python может быть очень удобна. Ни разу не пробовал, но выглядит любопытно.
- Glom [2] библиотека и инструмент на Python по работе с вложенными структурами. Позволяет делать выборки по словарям в Python, что особенно удобно при работе с данными со вложенными структурами, например, JSON и JSON lines файлам. От себя скажу что я вот про Glom не знал и в утилитах вроде undatum и внутри сборщика данных DataCrafter'а те же функции и логику приходилось реализовывать самостоятельно.
- OpenRefine [3] продукт для ручного преобразования и чистки данных, удобный, один из лучших способов чистить данные не покупая тяжелые решения. Умеет применять скрипты на Python и паре других языков к колонкам файлов.
- Apache Nifi [4] активно развивающийся low-code ETL с возможностью визуального проектирования пути обработки файлов и потоков. Nifi можно сравнить с другим проектом Apache, Airflow, но Airflow именно про оркестрацию потоков данных, а Nifi более похоже на классический ETL инструмент.
- Streamsets Data Collector [5] тоже ETL инструмент, похожий на Apache Nifi, подвид коммерческого облачного продукта и неизвестно сколько проживёт его open source версия. Например, CloverDX раньше тоже давали версию Community Edition своего продукта, а потом просто удалили её и всем сказали "идите в наше облако с 45 дневным триалом", а все пошли на другие open source ETL инструменты (ну не все, но многие). Тоже поддерживает преобразование данных и low-code интерфейс.
Ну а в реальной жизни на относительно небольших проектах, где нет нескольких разных команд стыкующихся между собой, чаще всего для преобразования данных используют:
- скрипты на Python и др. языках
- ручные преобразования через Jupiter Notebook и другие тетрадки
- встроенные механизмы: Javascript внутри MongoDB, Spark и др.
- корпоративные коммерческие ETL инструменты, если они ранее были закуплены
и тому подобное. Из того что я вижу в существующей экосистеме, это нехватка инструментов вроде dbt, но для NoSQL. Для NoSQL такое создать куда сложнее, нет одного протокола, стандарта формата, но сейчас получается что массовая популяризация dbt, а она реально как-то уж очень быстро идёт, оставляет NoSQL базы за пределами Modern Data Stack. То есть ELT инструментов для NoSQL баз нет, использовать то же MongoDB в качестве основаного Data warehouse (хранилища данных) можно только разрабатывая многое самостоятельно.
Поэтому рынок именно трансформации данных далеко не заполнен, а вот рынок извлечения данных и оркестрации кажется уже сильно переполненным.
Ссылки:
[1] https://hi-optimus.com/
[2] https://github.com/mahmoud/glom
[3] https://openrefine.org/
[4] https://nifi.apache.org/
[5] https://github.com/streamsets/datacollector-oss
#datatools #datatransformation #opensource
- Optimus [1] библиотека для универсализации преобразования данных через Python, интегрированная с Pandas, Dusk и другими инструментами. Для тех кто выстраивает цепочки изменений на Python может быть очень удобна. Ни разу не пробовал, но выглядит любопытно.
- Glom [2] библиотека и инструмент на Python по работе с вложенными структурами. Позволяет делать выборки по словарям в Python, что особенно удобно при работе с данными со вложенными структурами, например, JSON и JSON lines файлам. От себя скажу что я вот про Glom не знал и в утилитах вроде undatum и внутри сборщика данных DataCrafter'а те же функции и логику приходилось реализовывать самостоятельно.
- OpenRefine [3] продукт для ручного преобразования и чистки данных, удобный, один из лучших способов чистить данные не покупая тяжелые решения. Умеет применять скрипты на Python и паре других языков к колонкам файлов.
- Apache Nifi [4] активно развивающийся low-code ETL с возможностью визуального проектирования пути обработки файлов и потоков. Nifi можно сравнить с другим проектом Apache, Airflow, но Airflow именно про оркестрацию потоков данных, а Nifi более похоже на классический ETL инструмент.
- Streamsets Data Collector [5] тоже ETL инструмент, похожий на Apache Nifi, подвид коммерческого облачного продукта и неизвестно сколько проживёт его open source версия. Например, CloverDX раньше тоже давали версию Community Edition своего продукта, а потом просто удалили её и всем сказали "идите в наше облако с 45 дневным триалом", а все пошли на другие open source ETL инструменты (ну не все, но многие). Тоже поддерживает преобразование данных и low-code интерфейс.
Ну а в реальной жизни на относительно небольших проектах, где нет нескольких разных команд стыкующихся между собой, чаще всего для преобразования данных используют:
- скрипты на Python и др. языках
- ручные преобразования через Jupiter Notebook и другие тетрадки
- встроенные механизмы: Javascript внутри MongoDB, Spark и др.
- корпоративные коммерческие ETL инструменты, если они ранее были закуплены
и тому подобное. Из того что я вижу в существующей экосистеме, это нехватка инструментов вроде dbt, но для NoSQL. Для NoSQL такое создать куда сложнее, нет одного протокола, стандарта формата, но сейчас получается что массовая популяризация dbt, а она реально как-то уж очень быстро идёт, оставляет NoSQL базы за пределами Modern Data Stack. То есть ELT инструментов для NoSQL баз нет, использовать то же MongoDB в качестве основаного Data warehouse (хранилища данных) можно только разрабатывая многое самостоятельно.
Поэтому рынок именно трансформации данных далеко не заполнен, а вот рынок извлечения данных и оркестрации кажется уже сильно переполненным.
Ссылки:
[1] https://hi-optimus.com/
[2] https://github.com/mahmoud/glom
[3] https://openrefine.org/
[4] https://nifi.apache.org/
[5] https://github.com/streamsets/datacollector-oss
#datatools #datatransformation #opensource
GitHub
GitHub - mahmoud/glom: ☄️ Python's nested data operator (and CLI), for all your declarative restructuring needs. Got data? Glom…
☄️ Python's nested data operator (and CLI), for all your declarative restructuring needs. Got data? Glom it! ☄️ - mahmoud/glom