Базовый минимум Dimensional Modeling
Dimensional modeling (размерное моделирование) — способ организовать данные в хранилище для анализа. Его описал Ральф Кимбалл. Результат — star schema: таблица фактов в центре и таблицы измерений вокруг.
В этом курсе мы возьмём OLTP-базу магазина и построим из неё хранилище: звезду продаж, остатки, доставку, историю клиентов и возвраты.

Зачем знать моделирование
Заголовок раздела «Зачем знать моделирование»- Модель решает, будут ли цифры правильными. Неверный 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 table | fact_sales, key lookup, сверка с источником, запросы к звезде |
| Типы fact tables | Periodic snapshot, accumulating snapshot, factless, role-playing |
| SCD | Slowly Changing Dimensions: Type 1, 2, 3, 6 |
| Conformed dimensions | Bus matrix, drill-across, fan-out, агрегаты |
| Другие подходы | Инмон, Data Vault, OBT, Activity Schema, Medallion |
| Итоговая практика | Проектируем и строим возвраты от начала до отчёта |
Как заниматься
Заголовок раздела «Как заниматься»- Пройдите установку: DuckDB и учебная база магазина.
- Идите по урокам по порядку. Следующий урок использует таблицы из прошлого.
- Запускайте каждый SQL-блок сами. Сравнивайте результат с текстом урока.
- Решайте задания сами, без AI. Сначала напишите запрос, потом сверьтесь с блоком «Проверка», и только потом открывайте решение.
Курс основан на статье Dimensional Modeling 101 и книге Кимбалла The Data Warehouse Toolkit. В конце каждого урока есть ссылки «Глубже» на главы конспекта книги.
Начать: установка DuckDB и учебная база магазина.
Конспект Кимбалла The Data Warehouse Toolkit: 21 глава с практикой.