Перейти к содержимому
TelegramGitHub

Базовый минимум Dimensional Modeling

Dimensional modeling (размерное моделирование) — способ организовать данные в хранилище для анализа. Его описал Ральф Кимбалл. Результат — star schema: таблица фактов в центре и таблицы измерений вокруг.

В этом курсе мы возьмём OLTP-базу магазина и построим из неё хранилище: звезду продаж, остатки, доставку, историю клиентов и возвраты.

Star schema магазина: fact_sales в центре связан с dim_date, dim_customer, dim_product и dim_store

  • Модель решает, будут ли цифры правильными. Неверный grain или прямой JOIN двух фактов удваивает выручку. SQL при этом не выдаёт ошибок.
  • Аналитикам и BI нужны понятные таблицы. Звезда отвечает на вопрос «где лежит выручка по категориям» без пяти JOIN.
  • dbt — это моделирование. Каждая модель dbt — таблица факта или измерения. Без теории получается хаос из сотен моделей.
  • AI-агентам тоже нужна понятная модель. Агент пишет SQL лучше, когда таблицы называются fact_sales и dim_customer, а не t_ord_itm_v2.
  • Собеседования. Fact и dimension, grain, SCD Type 2, star против snowflake — частые вопросы для инженеров и аналитиков данных.
КтоЗадачи
Инженер данных / analytics engineerПроектирует слой marts, строит факты и измерения в dbt, реализует SCD, пишет тесты
Аналитик данных / BI-разработчикПишет запросы к звезде, строит семантический слой и дашборды, находит ошибки в grain

Каждый урок: теория простыми словами, схемы, потом практика в DuckDB на данных магазина. Уроки идут по порядку: следующий использует таблицы из прошлого.

УрокЧто внутри
УстановкаDuckDB, учебная OLTP-база магазина, схема src
OLTP и OLAPНормализация, 3NF, денормализация. Зачем аналитике отдельная модель
Факты и измеренияFact и dimension, star и snowflake, additive и semi-additive факты
Четыре шага и grainПроцесс проектирования Кимбалла, grain, ловушка header/line
Таблицы измеренийSurrogate key, календарь dim_date, unknown member
Строим fact tablefact_sales, key lookup, сверка с источником, запросы к звезде
Типы fact tablesPeriodic snapshot, accumulating snapshot, factless, role-playing
SCDSlowly Changing Dimensions: Type 1, 2, 3, 6
Conformed dimensionsBus matrix, drill-across, fan-out, агрегаты
Другие подходыИнмон, Data Vault, OBT, Activity Schema, Medallion
Итоговая практикаПроектируем и строим возвраты от начала до отчёта
  1. Пройдите установку: DuckDB и учебная база магазина.
  2. Идите по урокам по порядку. Следующий урок использует таблицы из прошлого.
  3. Запускайте каждый SQL-блок сами. Сравнивайте результат с текстом урока.
  4. Решайте задания сами, без AI. Сначала напишите запрос, потом сверьтесь с блоком «Проверка», и только потом открывайте решение.

Курс основан на статье Dimensional Modeling 101 и книге Кимбалла The Data Warehouse Toolkit. В конце каждого урока есть ссылки «Глубже» на главы конспекта книги.