Learning Platform
Глоссарий Troubleshooting
Урок 01.01 · 12 мин
Средний
dbtproductionanalytics engineeringВведение

Про этот курс

Это вторая часть программы по dbt — уровень middle/production. Если первая часть (dbt I) была про «как сделать рабочий проект из 10-20 моделей с базовыми тестами и snapshot», то эта — про то, как вести dbt-проект в команде из 5+ человек, на warehouse с миллиардами строк, с CI/CD, контрактами и Semantic Layer.

Курс рассчитан на 60-70 часов суммарно, разбит на 17 модулей, на русском, актуален на май 2026. Целевые версии: dbt-core 1.10.21 (stable), dbt-duckdb 1.10.1, DuckDB 1.4+ для MERGE. Где production будет Snowflake или BigQuery — мы это явно отмечаем: DuckDB здесь учебный warehouse, не цель, а средство.

dbt-i: если не проходили первую часть dbt-iii: что идёт после этого курса

Кому этот курс подходит

Идеальный читатель — это вы, если:

Портрет читателя курса
Analytics / Data Engineer1-3 года опыта. Уже сидите в dbt-проекте на работе или активно собеседуетесь на эту роль
нужно
Production ownershipХотите не просто 'писать модели', а отвечать за health всего проекта — CI/CD, alerts, freshness, contracts с downstream-командами
dbt I пройденУверенно используете ref(), sources, tests, базовый incremental, snapshot timestamp strategy. Понимаете, что такое DAG
Git/PR workflowДелаете feature branches, понимаете merge conflicts, code review — это базовый рабочий процесс, не освоен с нуля
SCD концептНа концептуальном уровне знаете, что такое Slowly Changing Dimensions Type 2. Кода не писали, но смысл понимаете

Курс не для тех, кто впервые открыл dbt — таким сначала нужен dbt I (или эквивалент). Курс также не для senior analytics engineer, которые уже годами ведут multi-project dbt Mesh — там будет третья часть, dbt III, про internals и архитектуру.

А вот если у вас в проекте уже 30-50 моделей, базовая CI-проверка через dbt test в GitHub Actions, и вы упираетесь в одно из: incremental scan стоит $$$, snapshots дублируют строки, тесты иногда красные по непонятной причине, новые модели ломают старые — этот курс закрывает разрыв.


Чем middle отличается от junior в dbt

Junior пишет модели. Middle отвечает за то, чтобы 100 моделей продолжали работать в проде через год без ручного бабушки-сидения.

Что добавляет middle к junior-набору
Incremental scaleJunior знает что incremental есть. Middle знает когда append, когда delete+insert, когда merge, когда microbatch — и почему
Production testsJunior пишет not_null. Middle пишет custom generic tests с error_if/warn_if, store_failures_as table, unit tests на бизнес-логику
CI/CDJunior запускает dbt run. Middle настраивает Slim CI с state:modified+, defer, source freshness gate, pre-commit с sqlfluff
Contracts & VersionsJunior меняет колонку и downstream ломается. Middle ставит enforced contract, выпускает v2 модели, deprecation_date на v1
Semantic LayerJunior считает revenue в каждой mart-модели. Middle определяет revenue в semantic_model один раз, BI и Python-нотебуки берут одинаковое число
Multi-envJunior пишет hard-coded schemas. Middle использует target.name, env_var с defaults, generate_schema_name override для prod

Это шесть осей, на которых растёт middle. Каждой посвящён один или несколько модулей курса.


Что внутри курса

17 модулей, ~85 уроков. Структура:

Прогрессия dbt II
00-01Введение + production project structure (medallion, naming, _models.yml organization, dbt_project_evaluator)
02-04Incremental deep — все стратегии, microbatch (1.9+), snapshots с SCD2 и hard_deletes
05-09Macros + adapter.dispatch, packages ecosystem, tests in depth, unit tests, documentation deep
10-13Model contracts/versions, multi-env, CI/CD locally (pre-commit + sqlfluff), CI/CD GitHub Actions + Slim CI
14-15Semantic Layer (MetricFlow), dbt Cloud и dbt Mesh intro
16Capstone — соберёшь production-grade pipeline на 50+ моделях с DuckDB

Каждый урок — это лекция (1500-3000 слов), 2-3 диаграммы, реальные примеры с output, блок «Попробуй сам» и 1-2 KnowledgeCheck. После каждого урока — quiz из 5-7 вопросов уровня conceptual / applied / analytical (factual вопросов в курсе нет, мы не тренируем зубрилку). В конце каждого крупного блока — _exam.json на 6 deep вопросов.


Почему DuckDB как warehouse

Этот курс middle-уровня, но warehouse мы используем DuckDB, не Snowflake и не BigQuery. Причин три:

  1. Воспроизводимость. DuckDB ставится одной командой pip install dbt-duckdb, не требует credentials, не стоит денег. Любой студент за 5 минут поднимает локальный warehouse и проходит каждый урок руками. Snowflake free tier истекает за 30 дней, BigQuery требует Google Cloud account с billing.

  2. dbt-агностичность. Большинство концептов уровня middle — incremental стратегии, snapshots, tests, CI/CD, Semantic Layer — работают одинаково на любом warehouse. SQL-диалект слегка отличается, но архитектура одинаковая. DuckDB дешевле всех в обучении и достаточен для 95% уроков.

  3. Реальная позиция в индустрии. DuckDB через MotherDuck стал production-warehouse для команд до 100 человек к 2026 году. Это не «учебная игрушка» — это рабочий выбор для среднего стартапа. Курс III (senior) дальше уйдёт в DuckLake / MotherDuck production.

Где DuckDB не справится или ведёт себя не как Snowflake/BQ — мы это явно отмечаем в уроках. Главные расхождения:

DuckDB vs Snowflake/BigQuery
MERGEDuckDB 1.4+ поддерживает MERGE. До этого только delete+insert. В Snowflake/BQ MERGE есть всегда
Materialized viewDuckDB не поддерживает materialized_view. В Snowflake/BQ — production-фича. Здесь мы её не учим
hard_deletes в snapshotDuckDB не поддерживает hard_deletes (3 опции — ignore/invalidate/new_record). На Snowflake/BQ работает. Мы объясняем концепт, но в лабах используем ignore
dbt Clouddbt Cloud не поддерживает DuckDB официально. Поэтому модуль 15 — это intro, мы запускаем jobs локально через dbt-core

В вашей реальной работе через год это, вероятно, будет Snowflake, BigQuery или Databricks. Курс готовит к этому переходу — концепты переносимы, синтаксис почти идентичен.


Что нужно от вас

Курс читается как книга, но не работает как книга. Чтобы реально вынести знания, нужно:

  1. Открыть терминал параллельно с уроком. В каждом модуле есть блоки «Попробуй сам» — это не риторика. Каждая команда dbt run, dbt test, каждый блок Jinja должен быть выполнен на вашем локальном проекте. Чтение, не подкреплённое практикой, забывается за две недели.
  2. Делать упражнения и квизы. В конце каждого урока — quiz из 5-7 вопросов. Не пропускайте — вопросы построены так, чтобы вытащить «вроде понял» и проверить на «реально понял». В конце каждого крупного блока — exam из 6 deep вопросов.
  3. Не торопиться. 65 часов курса лучше растянуть на 6-8 недель, чем уплотнить в две. Каждый модуль строится на предыдущем — если microbatch не понят, semantic layer не уложится.

Это бесплатно — и без подвоха

Курс полностью бесплатный. Нет paid tier, нет «купи курс за 99 рублей, чтобы открыть остальные модули», нет email-подписок с обещанием «20 советов про dbt в формате PDF». Всё содержимое — здесь, открыто, навсегда.


Как создавался курс

Курс создан при участии Claude (Anthropic) как соавтора: ИИ помогал писать материалы, структурировать темы, генерировать примеры кода и диаграммы. Каждая глава проходила ручную сверку с первоисточниками — спецификациями, документацией, исходным кодом рассматриваемых систем — но гарантировать 100% точность невозможно.

Если вы заметили неточность, опечатку или хотите предложить улучшение — напишите в Telegram-группу курса. Это самый ценный вклад в курс, который вы можете сделать.


Углублённое изучение с Claude

Курс рассчитан на самостоятельное изучение, но любая теория быстрее ложится, если задавать вопросы. Рекомендую держать рядом браузерное расширение Claude (claude.com/download) — оно работает с контентом открытой страницы: выделяете кусок урока и спрашиваете напрямую.

Сценарии, которые особенно хорошо работают для углублённого погружения:

  • «Объясни проще» / «дай ещё один пример» — когда формулировка из урока не дошла с первого раза.
  • «Покажи, как это устроено на уровне кода / железа» — когда хочется спуститься на слой ниже того, что даёт урок.
  • «Как это связано с [другая тема курса]» — когда нужно увязать концепцию с тем, что было раньше.
  • «У меня в проекте стек X — как применить?» — когда хочется примерить материал на свой реальный кейс.

Это не замена курсу, а способ ускорить интеграцию материала в вашу картину мира. Если что-то из ответов Claude расходится с уроком — присылайте в Telegram-группу, курс будет уточнён.


Нашли ошибку?

Если заметили неточность, опечатку или хотите предложить улучшение:

Telegram-группа курса
Обсуждение, вопросы, предложения

Telegram-канал

Подписывайтесь, чтобы узнавать об обновлениях и новых курсах:

@levoely_channel
Новости, обновления, новые курсы

Проверка знанийKnowledge check
Почему этот курс ставит DuckDB как warehouse, если большинство production-проектов в индустрии используют Snowflake или BigQuery?
ОтветAnswer
Потому что воспроизводимость и стоимость обучения важнее «реальности» warehouse-движка для большинства концептов. DuckDB ставится за 5 минут, не требует credentials, не стоит денег — любой студент может пройти каждый урок руками. А концепты middle-уровня (incremental стратегии, snapshots, tests, CI/CD, semantic layer) переносимы между warehouses почти один-в-один, потому что dbt и есть слой абстракции над warehouse. SQL-синтаксис различается на 5-10%, архитектура — нет. Поэтому курс честно отмечает: вы учитесь концептам на DuckDB, в реальной работе это будет Snowflake/BQ/Databricks, но переход с DuckDB-урока на Snowflake-проект — это вопрос двух дней на освоение диалекта, а не пересборки головы. Места, где DuckDB реально не работает (materialized_view, hard_deletes в snapshot, dbt Cloud), мы явно отмечаем в уроках.

Проверьте понимание

Результат: 0 из 0
Концептуальный
Вопрос 1 из 3. Для кого в первую очередь написан этот курс?

Закончили урок?

Отметьте его как пройденный, чтобы отслеживать свой прогресс

Войдите чтобы оценить урок

Прогресс модуля
0 из 3