Что такое Data Mart
Коротко
Data Mart (витрина данных) — специализированная таблица / view с уже готовыми данными для конкретного use-case.
Если DWH — это «сырое хранилище всего», Data Mart — «готовое блюдо для одного отдела».
Зачем нужен
Проблема без Data Mart
- Отдел маркетинга каждое утро пишет SQL на 100 строк, чтобы посчитать свой отчёт.
- Отдел продаж считает то же самое, но немного по-другому.
- CFO спрашивает «почему у нас в отчётах разная выручка» — начинается разбор.
Решение через Data Mart
- Один раз написали логику расчёта в Data Mart.
- Все отделы используют один источник истины.
- Отчёты быстрые, потому что данные агрегированы заранее.
Примеры
Data Mart для маркетинга
Таблица mart_marketing_daily:
date | channel | spend | installs | signups | first_purchases | cacОбновляется ежедневно. Маркетологи строят дашборды прямо на ней.
Data Mart для продукта
Таблица mart_product_daily:
date | dau | mau | new_users | retention_d1 | retention_d7 | revenueData Mart для финансов
date | gmv | revenue | margin | refunds | paid_ordersКак создаётся Data Mart
1. ETL через Airflow / cron
# Ежедневная джоба
def build_mart_marketing():
df = pd.read_sql("""
SELECT date, channel, SUM(spend) AS spend, ...
FROM raw_events
GROUP BY date, channel
""", db)
df.to_sql('mart_marketing_daily', db, if_exists='replace')2. dbt
Современный стандарт. Описываете модели в SQL, dbt строит DAG и пересчитывает:
-- models/mart_marketing_daily.sql
SELECT DATE, channel, SUM(spend) AS spend, ...
FROM {{ ref('raw_events') }}
GROUP BY DATE, channel
3. Materialized views
CREATE MATERIALIZED VIEW mart_daily_metrics AS
SELECT DATE, COUNT(DISTINCT user_id) AS dau, SUM(amount) AS revenue
FROM events GROUP BY DATE;
-- Обновлять по расписанию
REFRESH MATERIALIZED VIEW mart_daily_metrics;Если хочется сразу закрепить тему на практике — открой тренажёр в Telegram. 10 минут в день — и синтаксис в пальцах.
Data Mart vs Data Warehouse
| Критерий | Data Warehouse | Data Mart |
|---|---|---|
| Объём | Все данные | Подмножество |
| Аудитория | Вся компания | Один отдел / use-case |
| Гранулярность | Детальная | Агрегированная |
| Сложность | Высокая | Средняя |
| Кто использует | Data-команда | Аналитики, PM |
DWH — фундамент, Data Marts — надстройки для конкретных групп пользователей.
Архитектура
Raw data (логи, транзакции)
↓
Staging (очистка, стандартизация)
↓
Data Warehouse (fact и dimension таблицы)
↓
Data Marts (агрегированные витрины)
↓
BI (Tableau, Metabase) — аналитик, PM, бизнесПлюсы Data Marts
- Быстрые дашборды. Данные уже агрегированы — запрос < 1 сек.
- Единая логика. Все пользуются одной формулой метрики.
- Снижение нагрузки на DWH — одна тяжёлая джоба ночью, потом все читают готовое.
- Понятные имена столбцов — не нужно разбираться в 50 таблицах DWH.
Минусы
- Задержка данных. Обычно обновление 1 раз в день. Для real-time не подходит.
- Поддержка. ETL ломается → нужен кто-то, кто чинит.
- Rigidность. Новый метрика → новая колонка → рефактор.
- Storage duplication. Данные в DWH + Data Mart = занимают 2x.
Когда нужен, когда нет
Нужен
- Есть DWH и >3 команд, строящих дашборды.
- Одни и те же SQL-запросы повторяются у всех.
- Даши тормозят на сыром DWH.
Не нужен
- Маленькая команда, прямой Postgres.
- Real-time требования (Data Mart не успевает).
- Нет ETL-инфры.
Чтобы не только читать теорию, но и решать реальные задачи — загляните в бот Карьерника. Там по каждой теме подборка вопросов с разборами.
Типовые ошибки при построении
1. Слишком детальный Data Mart
Если Mart содержит все исходные данные — это DWH, не Mart. Агрегируйте.
2. Множество Data Mart-ов без стандартизации
Каждая команда делает свой Mart → снова «разные цифры». Нужны единые dimension-таблицы.
3. Забытый refresh
Data Mart устарел на неделю — дашборды показывают старое. Настройте мониторинг.
4. Слишком «сырые» столбцы
Имена типа col1, col2, metric_calc_v2 — путают. Нужны понятные total_revenue, new_users.
Как проектировать
- Кто пользователь? Маркетинг, продукт, CEO.
- Какие метрики? 5-10 ключевых, не больше.
- Какая гранулярность? Обычно день или неделя.
- Какие dimensions? Гео, канал, категория — что сегментируют.
- Как обновляется? Ночью через ETL, real-time streaming, по требованию.
Читайте также
FAQ
Data Mart и DWH — одно и то же?
Нет. DWH — большое хранилище всех данных. Data Mart — специализированная выборка на одну задачу.
Сколько Data Mart-ов держать?
По одному на команду / функциональную область. 3–10 — типично. Больше 20 — усложнение без пользы.
Можно ли сделать Data Mart в Excel?
Технически можно — сохранить агрегированный CSV. Но нет автоматизации, нет версионирования. Для разовых задач ок, для production — нет.
Data Mart и OLAP cube — разница?
OLAP cube — многомерная структура с предагрегированными значениями по каждому разрезу. Data Mart — обычная таблица, часто обновляемая ETL. Концептуально близко, но реализация разная.