Привет, Хабр, на связи product owner компании Modus Александр Чебанов! Сегодня поговорим об архитектуре аналитической платформы и подробнее остановимся на том, как организована Modus ETL. Поехали!
Анатомия аналитической платформы
В DW/BI есть несколько составляющих:
ETL — система управления данными;
DWH — хранилище данных;
BI — аналитический портал или клиент, который выводит, визуализирует данные и строит отчеты. Мы в Modus используем портал.
ETL-системы, в свою очередь, так же делятся на 2 типа:
«скриптовые» - работают с данными на конвейере из последовательности скриптов обработки кода, типа Pyton;
WorkFlow – работают с данными при помощи графического интерфейса. Modus ETL относится к этому типу систем.
На Хабре уже описывали процесс работы ETL, поэтому расскажу кратко, как это у нас.
С помощью скриптов (или самописных, или готовых) ETL собирает разрозненные данные из большого количества источников: СУБД, из файлов, 1C, web-сервисов через API и т.п. При этом, данные могут дублироваться, не совпадать, противоречить – это так называемые raw (сырые) данные. Modus ETL во многом предлагает пользователю работать в режиме no-code, например, подключаться к источникам данных через готовые коннекторы.
Затем данные переносятся в слой ядра обработки, где они очищаются, структурируются и приводятся в нормализованный вид.
Подготовленные для аналитики данные перемещаются в слой отчетности Data Marts, организованный на OLAP-системах (например, ClickHouse).
В агрегированном виде данные загружаются в BI-систему, которая отображает их в виде отчетов, таблиц, графиков и других визуальных компонентов.
Получение данных
Сбор данных – одна из базовых функций ETL-систем.
Modus ETL подключается к неограниченному количеству источников данных разных типов:
SQL. Oracle, Microsoft SQL Server, PostgreSQL, Vertica, ClickHouse, MySql «из коробки» и любые другие SQL через ODBC;
информационные базы любых конфигураций «1С:Предприятия»;
веб-сервисы в режиме no-code (через готовые коннекторы) и при помощи скриптов;
сsv, xlsx, json файлы через no-code инструменты и при помощи скриптов.
Настраивать правила получения и обработки данных можно в no-code и low-code, т.е. без программирования. Пользователь может вносить правила в настройках получения и преобразования данных и применять их сразу к нескольким источникам в один клик. Такое тиражирование сокращает время настройки и сопровождения системы: аналитик может оперативно вносить изменения.
Благодаря открытому коду продвинутые пользователи могут написать собственные коннекторы на языке 1C для более сложных подключений, например, к таким источникам как ГИСП, ЕГИС, СМЭВ и т.п.
Интеграция с хранилищами
Важно, чтобы аналитическая платформа была масштабируема и легко встраивались в IT-инфраструктуру, которая уже есть внутри бизнеса. Добавление новых аналитических компонентов не должно нарушать существующие потоки интеграции. Те продукты, которые уже есть в компании, должны работать с минимальными изменениями или без них.
Мы в нашей компании придерживаемся именно такого подхода: Modus BI и Modus ETL заточены под интеграцию в уже существующую архитектуру. Так мы оптимизируем бюджет на инфраструктуру и снижаем стоимость владения аналитической платформой.
Наша архитектура максимально адаптируется под любое хранилище, развернутое в компании: можно использовать любые развернутые СУБД или выбрать оптимальное хранилище данных под конкретную задачу. Это делает «коробку» немного дешевле для пользователя.
Концепт DW/BI предполагает разделение хранилища на 3 слоя – слой сырых данных, ядро и аналитической отчетности. ETL разделяет слои данных между разными типами СУБД. Преобразование, получение и обработка данных может выполняться в реляционных СУБД (PostgreSQL, MSSQL) или в аналитической реляционной СУБД для большого объема данных (типа Greenplum), а подготовленные витрины данных помещаются в высокопроизводительные аналитические СУБД типа Vertica или Clickhouse.
Используя такой подход, мы оптимально разделяем задачи и увеличиваем скорость обработки и предоставления данных.
Обработка данных
Система обработки данных Modus ETL работает через интерфейс WorkFlow – так мы сокращаем затраты времени. Пользователь настраивает весь процесс работы с данными через графический интерфейс, конфигурируя его сценарий и перетаскивая шаги работы с данными из палитры в рабочую область с помощью drag`n`drop.
На этапе разработки ETL-сценария мы можем проверять правильность настройки каждого шага. Например, мы можем просмотреть промежуточные результаты или статистику по качеству данных (количество дублей, записей, не прошедших проверку и т.п.).
Опытные пользователи могут писать скрипты обработки данных на языках SQL, T-SQL, 1C, (в скором времени и Python), это позволит еще более тонко организовать работу с данными при помощи Modus ETL. Скрипты могут сохраняться в шаблоны и использоваться повторно.
При работе с разными источниками важно, чтобы полученные из них данные были нормализованы в аналитическом хранилище. Одна из важных задач нормализации – работа с мастер-данными:
ведение и заполнение мастер-данных;
их дополнение;
соответствие между первичными данными и мастер-данными.
Modus ETL содержит подсистему аналитической НСИ, которая собирает первичные данные
из клиентских систем и настраивает их соответствие с эталонной записью,
созданной Modus ETL. Можно быстро внедрить систему НСИ, не внося изменения в системы заказчика.
Если нужно сделать ряд последовательных действий с данными, то можно объединить их в цепочки по принципу конвейера, и они будут выполняться автоматически по расписанию. При этом, всегда можно восстановить предыдущую версию до изменений.
Например, каждую ночь необходимо получать обновленные данные по продажам со всех торговых точек. Дальше их необходимо нормализовать при помощи аналитической НСИ, определить номенклатуру и записать результаты продаж в аналитический слой. Процесс сбора, обработки и помещения данных можно объединить в один пакет, настроить автоматическое расписание и получать отчет о результате работы.
Modus ETL – одна из немногих систем с функционалом предиктивной аналитики.
Благодаря машинному обучению ETL классифицирует, кластеризует, строит прогнозы и тренды на основе данных хранилищ.
Администрирование и сопровождение
Чтобы доверять аналитическим данным, необходимо быть уверенным, что они актуальные, вовремя собраны и не содержат ошибок.
Для контроля ETL-процессов в Modus предусмотрен функционал мониторинга:
отчеты о результатах и ошибках выполнения могут присылаться на регулярной основе ответственным пользователям;
для коннекта с корпоративными системами мониторинга предусмотрена интеграция с Zabbix. Мониторинг процессов позволяет вовремя локализовать, оповестить и исправить возможные ошибки сбора и преобразования данных, например, доступность внешних систем или отсутствие данных. А мониторинг времени выполнения пакетов дает возможность оптимизировать сбор и обработку данных. Одна из важных функций в администрировании Modus ETL – это разграничение доступов к объектам в разрезе проектов. Например, предоставление ограниченного доступа аналитику, который только обучается работать с системой. Ему может быть предоставлена своя база или контур разработки без прав самостоятельного переноса объектов в продакшн.
Итак, в этой статье мы рассмотрели, как же работает ETL на примере Modus. В следующей публикации поговорим о BI-составляющей. До связи!