Привет, Хабр!
Продолжаем серию статей о создании BI-системы в компании Sminex. Сегодня поговорим об автоматизации и оптимизации работы инженеров данных и BI-разработчиков. Работа с данными всегда требует поиска баланса между удобством, скоростью и качеством. В этой статье мы сосредоточимся на удобстве.
Наверняка вы сталкивались с ситуацией, когда данные в отчетах Power BI не обновились, а узнать об этом можно только после сообщений в чате. Или когда поиск нужной информации в хранилище данных (DWH) превращается в настоящий квест с запросами типа SELECT * FROM. Инженеры данных и BI-разработчики ежедневно решают не только задачи по интеграции и анализу данных, но и занимаются рутинной работой, такой как:
Поиск нужных объектов в DWH;
Написание шаблонных SQL-запросов;
Ручной запуск обновлений данных и отчетности;
Анализ логов и устранение ошибок в пайплайнах и отчетах.
Чтобы минимизировать эти рутинные процессы, мы разработали два внутренних инструмента:
BI Tools — веб-сервис для удобного поиска данных в DWH, генерации шаблонных SQL-запросов и управления процессами обновления данных;
PBI Usage — набор скриптов для мониторинга активности пользователей в Microsoft Power BI, контроля обновления отчетов и автоматической отправки уведомлений об ошибках в VK Teams.
Эти инструменты ежедневно помогают нам быстрее находить нужные данные, контролировать качество отчетов и избавляют от части рутинных задач. В следующих разделах подробно рассмотрим их функциональность, используемые технологии и преимущества, которые они приносят нашей команде.
BI Tools: быстрый доступ к DWH без танцев с бубном
Что нас не устраивало?
В основе нашего DWH лежит Anchor Model (якорная модель хранения данных). Это мощная и гибкая архитектура, но без хорошего инструмента разобраться в ней сложно. Чтобы построить нужную витрину, инженерам данных и BI-разработчикам приходилось:
Искать нужные «якоря» и их атрибуты вручную — по памяти или по названию, что не всегда быстро и удобно;
Разбираться в связях между объектами — иногда это превращалось в настоящий детектив;
Ручками писать SQL-запросы для получения промежуточных и итоговых данных;
Запускать пайплайны для обновления данных после внесения изменений или по запросу пользователей.
На это тратилось слишком много времени. Плюс часто возникали вопросы: «Что это за имя таблицы?» и «Где человекочитаемое описание колонок?».

Что мы использовали для решения?
Бэкенд сервиса реализовали на Java, фронтенд — на React. В качестве СУБД используется служебная схема внутри корпоративного DWH на PostgreSQL. Работа с якорной моделью осуществляется с помощью специальных таблиц и скриптов на Python, работающих с служебными таблицами PostgreSQL и извлекаемыми данными из DDL при работе anchor_model.py. Есть интеграция с Apache Airflow для запуска DAG-ов.
Как BI Tools решает проблему?
Мы разработали веб-сервис, который автоматизирует рутинные задачи:
Поиск и просмотр «якорей» в хранилище — сервис сразу показывает, какие атрибуты есть у объекта и как он связан с другими сущностями;
Генерация SQL-запросов — сервис сформирует корректный SQL-запрос для извлечения данных и отобразит результат (первые N строк);
Автоматическое формирование документации — работа модуля anchor_model.py, про который мы рассказывали в предыдущей статье, устроена так, что без обязательного указания описания инженер не может создать объект, а BI Tools собирает и отображает всю эту информацию в удобном виде;
Запуск ансамбля DAG-ов нажатием одной кнопки — если в отчете устарели данные и нет времени ждать обновления по расписанию или нужно проверить отображение после внесения изменений, можно инициировать обновление прямо через интерфейс сервиса.
Теперь инженеры данных и BI-разработчики не тратят часы на поиски данных и написание шаблонных SQL-запросов — эта часть работы полностью автоматизирована. Дополнительно мы реализовали дашборд, в котором отображаются связи систем-источников, сущностей якорной модели и отчетов.
Важно: Не все источники данных поддерживают динамическое обновление данных по запросу, но в большинстве случаев это работает без проблем.
Интересный факт:
Часть функционала BI Tools стала возможной только благодаря жестким правилам именования объектов якорной модели и их строгой типизации. Так как это заложено в скрипты, которые создают сущности якорной модели, правила соблюдаются автоматически. Правильные ограничения — это не только дисциплина, но и огромный плюс.
