2022-05-16 08:42:03
Я ранее много писал и рассказывал про то что внутри нашего проекта DataCrafter [1] находится несколько движков: распознавания данных, извлечения данных, каталогизации и ведения реестра и так далее и обещал часть продукта выложить в открытый код.
Эта задача несколько затянулась, вначале в открытом коде вышел metacrafter [2] движок по идентификации семантических типов данных и смысловых полей в наборах данных и СУБД (например, для идентификации персональных данных).
А теперь в режиме альфа версии доступен движок ETL, одноименно названный datacrafter [3]. Это NoSQL движок для работы с данными и с API для извлечения обработки и их сохранения. Движок выделен через миграцию кода в проекте, отделение его от остальной монолитной части и с переписыванием части кода для большей универсальности.
В чём особенность этого движка он изначально создавался только для загрузки любых данных в MongoDB и заточен под открытые данные, условно, любого размера. Он используется для обработки данных ФНС публикуемых гигабайтными XML файлами, для чего используется универсальный SAX парсер. Он создаёт файлы BSON которые можно грузить в MongoDB без дополнительных преобразований и так далее.
Как ещё он даёт возможности:
- настраивать извлечение данных из JSON, CSV, XML, JSONl файлов
- осуществлять преобразование данных: переименование полей, назначение типов полей, выполнение произвольного кода
- сохранять результаты в форматах BSON, JSON lines, CSV, в том числе сразу сжимая их в xz, gz, zip архивы
- умеет извлекать данные из API с помощью инструмента apibackuper [4]
В режиме альфа версии потому что большей части ключевог опока нет:
- нет готовой документации, только примеры.
- нет режима серверной работы, с агентами выполнения задач
- не перенесена интеграция с metacrafter и автодокументирование
- нет интеграции с HTML скрейперами
Поскольку документации пока мало, основной в примерах datacrafter-examples [5]. Например, можно посмотреть пример обработки больших XML файлов ФНС России внутри ZIP архивов с преобразованием в BSON [6] или сертификатов удостоверяющих центров где данные извлекаются из API и включен скрипт преобразования каждой записи.
Примеры запускаются командой "datacrafter run" в директории каждого примера.
В перспективе, по очередности:
1. Добавить документацию к движку и примерам и к рекомендациям как движок расширять.
2. Включить поддержку подключения к СУБД
3. Подключить загрузку данных в NoSQL
4. Добавить режим агентской работы (в режиме сервера)
5. Добавить режим UI
6. Добавить или подключить планировщик задач
Пока же можно начать его использовать, задавать вопросы и запросы на расширение в issues.
Ссылки:
[1] https://datacrafter.ru
[2] https://github.com/apicrafter/metacrafter
[3] https://github.com/apicrafter/datacrafter
[4] https://github.com/ruarxive/apibackuper
[5] https://github.com/apicrafter/datacrafter-examples
[6] https://github.com/apicrafter/datacrafter-examples/tree/main/fnspaytax
[7] https://github.com/apicrafter/datacrafter-examples/tree/main/uccertufo
#datatools #opensource #dataengineering
1.2K viewsIvan Begtin, 05:42