Зачем?
01 янв 2025
Авторы за долгие годы накопили большой опыт в построении DWH на основе low-code платформы SAP BI. В связи с уходом SAP возникла необходимость в освоении других, актуальных для России, подобных инструментов. В процессе анализа было выявлено, что на рынке существует пробел в части low-code платформ для моделирования и трансформации данных.
SQL как Ассемблер
Конечно, можно построить DWH, используя только SQL, DBT, Spark или другие инструменты для трансформации данных. Можно вручную собирать и поддерживать изменения таблиц, работать с Dbeaver, писать фреймворки на Python, Java, PL/SQL...
Однако, не является ли это шагом назад, когда вместо использования low-code платформы приходится вручную реализовывать множество рутинных задач?
Ситуация напоминает программирование на ассемблере, когда программы были короткими и быстрыми, но имели серьезные ограничения по сложности и требовали значительных временных затрат.
Ответ: DWH-платформы
Как и в случае с языками программирования, где ответом на ассемблер стали языки высокого уровня, ответом на прямую работу с SQL стали DWH-платформы. Эти платформы позволяют решать рутинные задачи моделирования и трансформации данных без необходимости писать большой объем кода вручную.
Хотя опытный программист может создать DWH вручную, бизнес может предпочесть более быстрые решения, предлагаемые DWH-платформами. Это особенно актуально, когда сравниваются сроки и эффективность решений, предлагаемых начинающими или средними специалистами.
От какой даты у вас на работе самая старая DWH-задача? А на какое время вперед такие задачи уже расписаны? ;)
Требования к DWH-инструменту
В процессе работы даже к SAP BI накопились вопросы и пожелания. В идеале, такая DWH-платформа для моделирования должна обладать следующими свойствами:
- Простота установки и использования
| Платформа должна быть максимально доступной и не требовать сложной настройки.- Zero-install подход: установка через Docker-образ — запуск за 1 минуту.
- Поддержка локального запуска (на десктопе) и облачного/веб-доступа (SaaS или self-hosted).
- Минимальные системные требования: работает на обычном ноутбуке.
- Интуитивный интерфейс с низким порогом входа — без необходимости глубокого знания SQL или DWH-архитектуры.
- Поддержка различных баз данных и расширяемость
| Поддержка различных СУБД и возможность подключения новых.- Поддержка основных DWH-ориентированных СУБД:
- ADB / Greenplum / PostgreSQL и форков;
- Clickhouse;
- MySQL/MariaDB;
- Oracle, MS SQL Server, Snowflake, BigQuery (по мере расширения).
- Clickhouse;
- MySQL/MariaDB;
- Модульная архитектура драйверов: возможность добавления новых баз через плагины.
- Единый интерфейс для работы с разными СУБД, с учётом особенностей синтаксиса и возможностей каждой.
- Поддержка ландшафта и переносов изменений по нему
| Поддержка Dev → Test → Prod и автоматизация переноса изменений.- Поддержка ландшафтов: Dev, Test, UAT, Prod.
- Автоматический сбор изменений в модели данных (DDL, трансформации, метаданные), выполненных как вручную из консоли, так и в рамках DWH-платформы.
- Интеграция с CI/CD-процессами: автоматический деплой изменений по мере готовности.
- Возможность ручного и автоматического переноса изменений с сохранением истории и контроля целостности.
- Контроль версий и аудит изменений
| Полная прозрачность и восстановимость изменений.- Возможность просмотра истории изменений любой сущности (таблицы, сателлиты, UDF, трансформации).
- Возврат к любой версии модели с возможностью сравнения и слияния.
- Аудит всех действий пользователей: кто, что и когда изменил.
- Гибкое моделирование данных и автогенерация SQL
| Поддержка современных подходов к моделированию DWH.- пподдержка Data Vault.
- поддержка моделирования таблиц, а также их сателлитов.
- поддержка Star-схемы.
- поддержка генерации витрин данных.
- поддержка механизма быстрого мэппинга в трансформациях.
- Гибкость в управлении SQL-генерацией
| Баланс между автоматизацией и контролем.- Возможность просмотра, редактирования и ручной правки сгенерированного SQL.
- Поддержка ручного SQL-кода на критических участках (аналог "вставки ассемблера")
- Предупреждения при отклонении от сгенерированной логики.
- Сравнение изменённого SQL с шаблоном для контроля соответствия стандартам
- Надёжные цепочки загрузки (ETL/ELT)
| Отказоустойчивость и гибкость при выполнении процессов.- Возобновление упавших цепочек с повтором только аварийного шага (без перезапуска успешных)
- Обработка блокировок таблиц без остановки всей цепочки
- Независимость шагов: падение одного процесса (например, Контрагенты) не блокирует другие (например, Продукты).
- Поддержка запуска цепочек через внешние оркестраторы (Airflow, Dagster, Prefect и др.).
- Поддержка параллельного выполнения независимых загрузок.
- Готовый контент и шаблоны
| Ускорение старта проектов.- Набор готовых бизнес-моделей данных (финансы, логистика, CRM, продажи и др.).
- Примеры реализации Data Vault, Star Schema, витрин.
- Шаблоны трансформаций, проверок качества, загрузок.
- Библиотека best practices и референсных архитектур.
- Трансформации и вычисления
| Гибкость и производительность обработки данных.- автотесты трансформаций
- Задание входных данных.
- Запуск трансформации.
- Сравнение результата с эталоном.
- Построение цепочек тестов.
- Выполнение трансформаций внутри СУБД (in-database) с параллелизацией.
- Для простых операций — данные не покидают БД (максимальная скорость).
- Для сложных — интеграция с внешними кластерами (Trino, Spark, Flink).
- Поддержка UDF, PL/pgSQL, Python, SQL-функций.
- Контроль качества данных (Data Quality)
| Обеспечение достоверности и прозрачности данных.- Настройка правил проверки на любом этапе потока (NULL, диапазоны, уникальность, бизнес-логика).
- Удобный визуальный интерфейс для создания и управления правилами.
- Классификация данных по результатам проверки: красный, желтый, зеленый флаг;
- Разделение и управление "ошибочными" данными.
- Формирование Error Data Mart — централизованного хранилища брака.
- Фоновая проверка после ELT-процессов.
- Песочница и безопасная разработка
| Защита основной модели при разработке.- Возможность создания изолированной песочницы для тестирования изменений.
- После проверки — безопасное применение изменений к основной модели (Dev).
- Все изменения в песочнице не влияют на основную среду.
- Поддержка "неразрушающей" разработки (Non-Destructive Development)
| Совместимость с Agile и безопасность существующих объектов.- Поддержка инкрементальной разработки без изменения или удаления существующих объектов.
- Возможность расширения, но не модификации/удаления критичных объектов.
- Ограничения доступа через нативные механизмы СУБД (GRANT/REVOKE), чтобы нельзя было обойти через консоль.
- Защита от случайного удаления или изменения production-объектов.
- Снижение сложности разработки
| Фокус на продуктивности и удобстве.- Разделение областей видимости: инженер видит только объекты своей задачи.
- Быстрое переключение между контекстами разработки.
- Возможность создания персональных рабочих пространств.
- Использование мастеров для создания объектов (например, выборка из Data Vault).
- Подсказки, автодополнение, валидация.
- Гибкая интеграция с существующей инфраструктурой
| Поддержка гибридного подхода к разработке - возможность использования и других инструментов.- Возможность импорта существующих объектов из БД в модель платформы.
- Поддержка гибридного редактирования: через платформу или вручную (DDL). Все изменения (вне зависимости от способа) автоматически отслеживаются для переноса по ландшафту.
- Синхронизация модели с реальным состоянием БД.
- Отладка и симуляция
| Повышение качества и снижение рисков.- Пошаговое выполнение (дебаг) UDF, функций, трансформаций.
- Симуляция выполнения: просмотр результата без внесения изменений в БД.
- Подсветка потенциальных ошибок до запуска.
- Расширяемость и API
| Интеграция и кастомизация под нужды команды.- Поддержка плагинов и расширений (своих и сторонних).
- Документированный SDK для разработчиков.
- Автоматическая документация и data lineage
| Прозрачность и поддержка знаний.- Автогенерация документации по модели данных.
- Построение data lineage (от источника до витрины) в визуальном виде.
- Навигация по объектам: от таблицы — к источникам, трансформациям, потребителям.
- Экспорт документации в PDF, HTML, Markdown.
- Интеграция с каталогами данных (например, DataHub).
- Гибкие стратегии загрузки
| Поддержка разных типов источников и вариантов загрузки.- Full (полная выгрузка)
- Delta (дельта)
- Snapshot (снапшоты)
- Batch (пакетная)
- Stream (стриминг)
- Self service модели данных - передача части возможностей по трансформации бизнес-пользователям:
| Передача части функций бизнес-пользователям.- Возможность бизнес-пользователям: корректировать мэппинг полей; редактировать простые трансформации (через Python, SQL, PL/pgSQL).
- Контролируемый доступ: изменения проходят через review или песочницу.
- Поддержка аналитиков без глубоких технических знаний.
- Интеграция с AI/ML (локально или онлайн)
| Умные подсказки и автоматизация.- Анализ RAW-таблиц на предмет выделения мастер- и транзакционных данных.
- Предложение нормализованной модели данных из денормализованных источников.
- Предложение построения модели Data Vault.
- Генерация Data Marts на основе частых запросов.
- Анализ SQL-запросов пользователей для оптимизации модели.
- AI-ассистент: реализация предложенной модели с уточнениями от разработчика.
- Безопасность и управление доступом
| Ограничение доступа к моделям- Ролевая модель (RBAC): администратор, разработчик, аналитик, читатель.
- Аутентификация через LDAP, SSO, OAuth.
- Шифрование данных.
Не стесняемся, добавляем желаемые возможности программы на форуме.
Цели проекта
Основной целью создания этой программы является освоение новых и актуализация старых знаний для работы в текущих реалиях:
- Greenplum
- Clickhouse
- SQL различных модификаций
- Typescript
- JavaScript
- PHP
- NodeJS
- React
- Vue
- HTML, CSS и прочие чебурашки...