Что такое 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 | revenue

Data 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.

Как проектировать

  1. Кто пользователь? Маркетинг, продукт, CEO.
  2. Какие метрики? 5-10 ключевых, не больше.
  3. Какая гранулярность? Обычно день или неделя.
  4. Какие dimensions? Гео, канал, категория — что сегментируют.
  5. Как обновляется? Ночью через 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. Концептуально близко, но реализация разная.