Зачем?

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-платформа для моделирования должна обладать следующими свойствами:

  1. Простота установки и использования
    | Платформа должна быть максимально доступной и не требовать сложной настройки.
    • Zero-install подход: установка через Docker-образ — запуск за 1 минуту.
    • Поддержка локального запуска (на десктопе) и облачного/веб-доступа (SaaS или self-hosted).
    • Минимальные системные требования: работает на обычном ноутбуке.
    • Интуитивный интерфейс с низким порогом входа — без необходимости глубокого знания SQL или DWH-архитектуры.
  2. Поддержка различных баз данных и расширяемость
    | Поддержка различных СУБД и возможность подключения новых.
    • Поддержка основных DWH-ориентированных СУБД:
      • ADB / Greenplum / PostgreSQL и форков;
      • Clickhouse;
      • MySQL/MariaDB;
      • Oracle, MS SQL Server, Snowflake, BigQuery (по мере расширения).
    • Clickhouse;
    • MySQL/MariaDB;
    • Модульная архитектура драйверов: возможность добавления новых баз через плагины.
    • Единый интерфейс для работы с разными СУБД, с учётом особенностей синтаксиса и возможностей каждой.
  3. Поддержка ландшафта и переносов изменений по нему
    | Поддержка Dev → Test → Prod и автоматизация переноса изменений.
    • Поддержка ландшафтов: Dev, Test, UAT, Prod.
    • Автоматический сбор изменений в модели данных (DDL, трансформации, метаданные), выполненных как вручную из консоли, так и в рамках DWH-платформы.
    • Интеграция с CI/CD-процессами: автоматический деплой изменений по мере готовности.
    • Возможность ручного и автоматического переноса изменений с сохранением истории и контроля целостности.
  4. Контроль версий и аудит изменений
    | Полная прозрачность и восстановимость изменений.
    • Возможность просмотра истории изменений любой сущности (таблицы, сателлиты, UDF, трансформации).
    • Возврат к любой версии модели с возможностью сравнения и слияния.
    • Аудит всех действий пользователей: кто, что и когда изменил.
  5. Гибкое моделирование данных и автогенерация SQL
    | Поддержка современных подходов к моделированию DWH.
    • пподдержка Data Vault.
    • поддержка моделирования таблиц, а также их сателлитов.
    • поддержка Star-схемы.
    • поддержка генерации витрин данных.
    • поддержка механизма быстрого мэппинга в трансформациях.
  6. Гибкость в управлении SQL-генерацией
    | Баланс между автоматизацией и контролем.
    • Возможность просмотра, редактирования и ручной правки сгенерированного SQL.
    • Поддержка ручного SQL-кода на критических участках (аналог "вставки ассемблера")
    • Предупреждения при отклонении от сгенерированной логики.
    • Сравнение изменённого SQL с шаблоном для контроля соответствия стандартам
  7. Надёжные цепочки загрузки (ETL/ELT)
    | Отказоустойчивость и гибкость при выполнении процессов.
    • Возобновление упавших цепочек с повтором только аварийного шага (без перезапуска успешных)
    • Обработка блокировок таблиц без остановки всей цепочки
    • Независимость шагов: падение одного процесса (например, Контрагенты) не блокирует другие (например, Продукты).
    • Поддержка запуска цепочек через внешние оркестраторы (Airflow, Dagster, Prefect и др.).
    • Поддержка параллельного выполнения независимых загрузок.
  8. Готовый контент и шаблоны
    | Ускорение старта проектов.
    • Набор готовых бизнес-моделей данных (финансы, логистика, CRM, продажи и др.).
    • Примеры реализации Data Vault, Star Schema, витрин.
    • Шаблоны трансформаций, проверок качества, загрузок.
    • Библиотека best practices и референсных архитектур.
  9. Трансформации и вычисления
    | Гибкость и производительность обработки данных.
    • автотесты трансформаций
      • Задание входных данных.
      • Запуск трансформации.
      • Сравнение результата с эталоном.
      • Построение цепочек тестов.
    • Выполнение трансформаций внутри СУБД (in-database) с параллелизацией.
    • Для простых операций — данные не покидают БД (максимальная скорость).
    • Для сложных — интеграция с внешними кластерами (Trino, Spark, Flink).
    • Поддержка UDF, PL/pgSQL, Python, SQL-функций.
  10. Контроль качества данных (Data Quality)
    | Обеспечение достоверности и прозрачности данных.
    • Настройка правил проверки на любом этапе потока (NULL, диапазоны, уникальность, бизнес-логика).
    • Удобный визуальный интерфейс для создания и управления правилами.
    • Классификация данных по результатам проверки: красный, желтый, зеленый флаг;
    • Разделение и управление "ошибочными" данными.
    • Формирование Error Data Mart — централизованного хранилища брака.
    • Фоновая проверка после ELT-процессов.
  11. Песочница и безопасная разработка
    | Защита основной модели при разработке.
    • Возможность создания изолированной песочницы для тестирования изменений.
    • После проверки — безопасное применение изменений к основной модели (Dev).
    • Все изменения в песочнице не влияют на основную среду.
  12. Поддержка "неразрушающей" разработки (Non-Destructive Development)
    | Совместимость с Agile и безопасность существующих объектов.
    • Поддержка инкрементальной разработки без изменения или удаления существующих объектов.
    • Возможность расширения, но не модификации/удаления критичных объектов.
    • Ограничения доступа через нативные механизмы СУБД (GRANT/REVOKE), чтобы нельзя было обойти через консоль.
    • Защита от случайного удаления или изменения production-объектов.
  13. Снижение сложности разработки
    | Фокус на продуктивности и удобстве.
    • Разделение областей видимости: инженер видит только объекты своей задачи.
    • Быстрое переключение между контекстами разработки.
    • Возможность создания персональных рабочих пространств.
    • Использование мастеров для создания объектов (например, выборка из Data Vault).
    • Подсказки, автодополнение, валидация.
  14. Гибкая интеграция с существующей инфраструктурой
    | Поддержка гибридного подхода к разработке - возможность использования и других инструментов.
    • Возможность импорта существующих объектов из БД в модель платформы.
    • Поддержка гибридного редактирования: через платформу или вручную (DDL). Все изменения (вне зависимости от способа) автоматически отслеживаются для переноса по ландшафту.
    • Синхронизация модели с реальным состоянием БД.
  15. Отладка и симуляция
    | Повышение качества и снижение рисков.
    • Пошаговое выполнение (дебаг) UDF, функций, трансформаций.
    • Симуляция выполнения: просмотр результата без внесения изменений в БД.
    • Подсветка потенциальных ошибок до запуска.
  16. Расширяемость и API
    | Интеграция и кастомизация под нужды команды.
    • Поддержка плагинов и расширений (своих и сторонних).
    • Документированный SDK для разработчиков.
  17. Автоматическая документация и data lineage
    | Прозрачность и поддержка знаний.
    • Автогенерация документации по модели данных.
    • Построение data lineage (от источника до витрины) в визуальном виде.
    • Навигация по объектам: от таблицы — к источникам, трансформациям, потребителям.
    • Экспорт документации в PDF, HTML, Markdown.
    • Интеграция с каталогами данных (например, DataHub).
  18. Гибкие стратегии загрузки
    | Поддержка разных типов источников и вариантов загрузки.
    • Full (полная выгрузка)
    • Delta (дельта)
    • Snapshot (снапшоты)
    • Batch (пакетная)
    • Stream (стриминг)
  19. Self service модели данных - передача части возможностей по трансформации бизнес-пользователям:
    | Передача части функций бизнес-пользователям.
    • Возможность бизнес-пользователям: корректировать мэппинг полей; редактировать простые трансформации (через Python, SQL, PL/pgSQL).
    • Контролируемый доступ: изменения проходят через review или песочницу.
    • Поддержка аналитиков без глубоких технических знаний.
  20. Интеграция с AI/ML (локально или онлайн)
    | Умные подсказки и автоматизация.
    • Анализ RAW-таблиц на предмет выделения мастер- и транзакционных данных.
    • Предложение нормализованной модели данных из денормализованных источников.
    • Предложение построения модели Data Vault.
    • Генерация Data Marts на основе частых запросов.
    • Анализ SQL-запросов пользователей для оптимизации модели.
    • AI-ассистент: реализация предложенной модели с уточнениями от разработчика.
  21. Безопасность и управление доступом
    | Ограничение доступа к моделям
    • Ролевая модель (RBAC): администратор, разработчик, аналитик, читатель.
    • Аутентификация через LDAP, SSO, OAuth.
    • Шифрование данных.

Не стесняемся, добавляем желаемые возможности программы на форуме.

Цели проекта

Основной целью создания этой программы является освоение новых и актуализация старых знаний для работы в текущих реалиях:

  • Greenplum
  • Clickhouse
  • SQL различных модификаций
  • Typescript
  • JavaScript
  • PHP
  • NodeJS
  • React
  • Vue
  • HTML, CSS и прочие чебурашки...