Оглавление
Время чтения: 8 минут
Что такое DWH
Data Warehouse — это специализированная хранилище данных, предназначенная для подготовки управленческой отчётности и аналитики. Наша DWH агрегирует данные из разных источников и позволяет руководителям принимать обоснованные решения.
В DWH хранятся показатели доходов и расходов, структурированные и в основном уже готовые к использованию — данные не нуждаются в крупных трансформациях перед анализом.
Компоненты системы
Grist
Это гибрид таблицы и простого интерфейса вида электронных таблиц, но с теми возможностями, что есть у реляционной базы данных:
- В столбцах задаётся тип данных и имя, можно использовать формулы, которые автоматически пересчитываются.
- Поддерживается синтаксис Python и библиотека функций наподобие Excel. Основой служит SQLite, что позволяет легко читать файлы Grist любыми инструментами, поддерживающими SQLite.
- Можно экспортировать/импортировать данные, работать с Google Sheets / Excel.
- Есть гибкая система прав доступа: разделение прав по строкам, столбцам, таблицам; атрибуты пользователя; интеграция с системой аутентификации, например через SSO.
Почему именно Grist
Наши требования были такие:
- Нужен редактор таблиц, требующий минимальных внешних доработок.
- Возможность гибко настраивать доступы и права, фильтровать видимость строк/столбцов в зависимости от роли пользователя.
- Быстрое тестирование гипотез — возможность оперативно завести таблицу, заполнить, проанализировать.
Grist удовлетворил этим требованиям: формулы, классные интерфейсы, шаблоны, API, Python-скрипты и т. д.
Как используется Grist
Вот несколько примеров из нашей практики (с вымышленными данными):
- У нас есть рабочие пространства, которые объединяют документы по проектам или отделам. Можно делиться документами с разными ролями (владелец, редактор, наблюдатель).
- В одном из документов, например, таблице «Расходы», менеджеры видят только свои строки, а бухгалтера — всё.
- Для этого мы создаём вспомогательную таблицу «Команда», где прописаны пользователи и их роли, и на основе этого настраиваем правила доступа на уровне строк и столбцов.
- Также в колонке «Ответственный» автоматически проставляется имя пользователя, создавшего или изменившего запись, при наличии новой записи — благодаря формуле-триггеру.
Airflow, Grist API и тактирование истории данных
Используем планировщик задач (Airflow) для автоматизации выгрузок из Grist.
Два типа задач:
- Частая (например, каждый час) — синхронизация таблицы целиком.
- Раз в сутки — сохранение снимка таблицы (snapshot / DIM-таблица), чтобы иметь историю, как данные выглядели в разные дни. Эти снимки сохраняются в PostgreSQL.
Таким образом, хранится и актуальная версия, и история изменений, что позволяет анализировать динамику.
Метабаза (Metabase) и взаимодействие с другими компонентами
Metabase используется как платформа визуализации и построения отчётов. Возможности:
- Подключение к базе данных (PostgreSQL и др.).
- Создание SQL-запросов и визуальных отчётов, фильтров.
- Возможность настраивать уровни доступа.
Мы добавили следующие фичи
- Кнопка «Обновить» — чтобы сразу получать свежие данные, не дожидаясь расписания. Данная кнопка инициирует задачу (dag) в Airflow через API.
- Actions в Metabase — механизм, позволяющий привязать SQL-запрос к кнопке на дашборде. Например, по нажатию выполняется запрос, триггерящий обновление данных.
- Используется расширение psql-http — позволяет из PostgreSQL делать HTTP-запросы (например, к API Airflow), что помогает делегировать часть логики из интерфейса дашборда.
Как создаётся кнопка на дашборде
- В настройках подключения БД включается разрешение на «Actions».
- На дашборде выбираем режим редактирования, добавляем кнопку действия.
- Назначаем, к какой модели она относится, задаём SQL-запрос, который будет выполняться при нажатии.
- Если задача — не просто манипулировать данными, а вызвать внешнюю функцию или API, можно обойти ограничения (например, что Actions поддерживают только certain типы запросов) через конструкции типа CTE и запросов, которые ничего не изменяют, но вызывают нужную функцию.
Итоги и преимущества
- Доступ к управленческому учёту без необходимости постоянно обращаться к аналитикам или разработчикам.
- Возможность видеть историю изменений и сравнивать периоды.
- Уровень прозрачности и контроля выше, чем просто статичные отчёты.
- Пользователи могут самостоятельно запускать обновления данных.
- Сокрашение времени на проверку состояния бизнеса.
Вывод
Интеграция Grist + Airflow + PostgreSQL + Metabase даёт гибкое и мощное решение для DWH и визуальной аналитики. Работа с данными становится проще, быстрее, прозрачнее. Такой подход позволяет оперативно получать инсайты, проверять гипотезы и управлять бизнесом в режиме, близком к реальному.