Learning Platform
Глоссарий Troubleshooting
Урок 01.01 · 14 мин
Продвинутый
dbtinternalsseniorВведение

Про этот курс

Это третья — финальная — часть программы по dbt. Уровень senior / internals. Если dbt II учила вести production-проект на 100+ моделях, то здесь мы спускаемся на этаж ниже: открываем core/dbt/ в репозитории dbt-labs/dbt-core и разбираем, как именно dbt run превращается в SQL, бегущий в warehouse. Кто такой Manifest, что делает GraphRunnableTask, почему execute=False ломает половину macros, как работает partial parse через msgpack, и какие пять контекстов Jinja дают разный набор объектов.

Курс рассчитан на 75-80 часов, разбит на 15 модулей, на русском, актуален на май 2026. Целевые версии: dbt-core 1.11.5 (stable Q4 2025), dbt-core 1.12 (April 2026, semantic layer v2 YAML), dbt-adapters 1.10+, dbt Fusion (beta May 2025, GA Coalesce 2025), dbt-duckdb 1.10.1. Где обсуждаем Fusion engine — упоминаем что это Rust implementation на SDF Labs codebase, и какие сценарии оно ускоряет, какие нет.


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

Портрет читателя dbt III
Staff / Senior Analytics Engineer3-7 лет опыта. Ведёте dbt-проект на 500+ моделях, отвечаете за архитектуру, пишете PR в open-source.
нужно
Data Platform ownershipНе просто 'пишите модели', а проектируете dbt Mesh для 5+ продуктовых команд, выпускаете внутренние пакеты, отвечаете за SLA pipeline.
dbt II пройденУверенно владеете incremental стратегиями, snapshots, model contracts, unit tests, Slim CI, semantic layer. Можете объяснить когда какая стратегия.
Python 3.10+Читаете и пишете классы, dataclasses, pydantic models. Понимаете type hints, abstract base classes, mixins. Можете распарсить чужой Python-репозиторий за вечер.
SQL implementer levelЗнаете как warehouse компилирует MERGE, что показывает EXPLAIN ANALYZE, разбираетесь в query planner — пусть не на уровне contributor PostgreSQL, но идею оптимизатора понимаете.

Курс не подходит тем, кто впервые работает с dbt — таким сначала dbt I. И тем, кто застрял на «как написать первую инкрементальную модель» — туда dbt II. dbt III предполагает, что вы уже годами в production, и вопрос не «что делать?», а «как это устроено и где оно сломается?».

А вот если вы периодически читаете dbt-core PRs на GitHub, делаете контрибьюты в адаптеры (даже маленькие — dbt-duckdb, dbt-postgres), мейнтейните внутренний package для команды, или собираетесь писать свой adapter под нестандартный warehouse — этот курс закрывает разрыв между «использую dbt» и «понимаю что dbt делает».


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

Middle отвечает за project-level качество: 100 моделей в проде стабильно. Senior отвечает за то, чтобы platform-level dbt работала: 5 проектов в Mesh, 3 custom адаптера, внутренний package с 40 macros, 30 dashboards на Semantic Layer.

Что добавляет senior к middle-набору
Reads sourceMiddle читает docs. Senior читает Python source — открывает core/dbt/parser/manifest.py чтобы понять почему partial parse инвалидировался.
Custom materializationsMiddle использует table/view/incremental. Senior пишет custom materialization audit_log с 6-фазным lifecycle и dispatch для разных адаптеров.
Adapter from scratchMiddle настраивает existing adapter. Senior пишет dbt-mywarehouse с нуля: Credentials, ConnectionManager, Relation, Column, required macros, dbt-tests-adapter suite.
dbt MeshMiddle работает в monorepo. Senior проектирует multi-project setup через project_dependencies, governance access (public/private/protected), contract versions, deprecation_date.
ProgrammaticMiddle запускает dbt run в CI. Senior встраивает dbtRunner в Dagster orchestrator с pre-loaded Manifest, thread-safe wrappers, custom event hooks.
Fusion + MetricFlowMiddle использует Semantic Layer. Senior понимает MetricFlow DataflowPlan, разбирается в SDF compiler внутри Fusion, делает осознанный выбор миграции.

Это шесть осей senior. Каждой посвящено два-три модуля.


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

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

Прогрессия dbt III
00Введение: про курс, навигация, прогресс.
01-03Архитектура (pipeline, hubs, repo modules, execution flow), parsing pipeline (tree-sitter, manifest, partial parse), Jinja contexts (parse vs execute, Provider/Macro/Base, statement, config API).
04-05Manifest deep-dive (структура JSON, schema versions, use cases), run_results и artifacts (run_results.json, catalog.json, sources.json, observability).
06-07Programmatic invocation (dbtRunner, dbt.invoke, thread-safety, orchestrator integration), custom materializations (6-фазный lifecycle, dispatch, precedence).
08-09Adapter API I (Credentials, ConnectionManager, debug workflow), Adapter API II (Relation, Column, required macros, packaging, Trusted Adapter Program).
10-11Performance at scale (1000+ моделей: partial parse tuning, threads, defer, microbatch parallel), dbt Mesh (cross-project ref, access, versions, governance).
12-13dbt Fusion (Rust engine, SDF, public beta, что ускоряет/нет, миграция через dbt-autofix), Semantic Layer internals (MetricFlow DataflowPlan, v2 YAML 1.12, GraphQL/JDBC).
14Capstone — три варианта: контрибьют в dbt-core (good_first_issue), adapter from scratch (dbt-pglite/dbt-clickhouse-light), large-project optimization case.

Каждый урок — 2000-3500 слов senior-tone (глубокий, технический), 2-3 диаграммы, ссылки на конкретные файлы dbt-core source code, реальные Python-сниппеты из репозитория, блок «Попробуй сам» с глубокими техниками (открыть pdb на parsing, профилировать через cProfile, дебажить partial parse hash). После урока — quiz 5-7 вопросов уровня applied / analytical (conceptual — только для теоретических основ; зубрилку мы здесь не тренируем).


Стек курса

  • dbt-core 1.11.5 (stable Q4 2025), 1.12 (April 2026 — отмечаем где разница)
  • dbt-adapters 1.10+ — separate package since 1.8 split
  • Python 3.10-3.12 — все примеры на 3.11
  • dbt-duckdb 1.10.1 — основной обучающий adapter (источник Python-кода для разборов)
  • DuckDB 1.4+ — для labs с custom adapter
  • dbt Fusion (beta May 2025, GA Coalesce 2025) — отдельный модуль, ставится как curl get.dbt.com
  • MetricFlow 0.207+ (входит в dbt-core 1.6+, активно эволюционирует)

Что НЕ покрываем

Курс целиком — про dbt internals. Намеренно опускаем:

  • dbt Cloud UI — не платформа курса. Касаемся только Cloud-specific features (defer, jobs scheduler) концептуально
  • Snowflake / BigQuery / Databricks specifics — наш adapter для разборов — dbt-duckdb (open source, читаемый Python, ~5000 строк)
  • Airflow operators — используем Dagster как пример orchestration с pre-loaded Manifest
  • dbt Power User VS Code — IDE-tooling вне scope
  • Business cases — это технический курс, не «как продать data team boss-у»

Где курс уходит за рамки senior CV — модуль 12 (dbt Fusion deep) и модуль 13 (MetricFlow internals). Эти темы пока редко в production, но senior должен про них уметь рассуждать. Capstone — реально применимый артефакт: либо PR в dbt-core, либо собственный adapter, либо optimization case с замерами.


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

Senior курс — это работа с исходниками. Чтобы реально вынести знания, нужно:

  1. Открыть dbt-core клонированным локально. Прямо параллельно с курсом. git clone https://github.com/dbt-labs/dbt-core; git checkout v1.11.5. В каждом уроке будут отсылки к конкретным файлам — core/dbt/parser/manifest.py:line 234, dbt/contracts/graph/manifest.py. Открывайте, читайте, ставьте breakpoint() где интересно.
  2. Делать labs. Лабораторий четыре — custom materialization, adapter from scratch, programmatic invocation, large-project optimization. Каждая занимает 4-8 часов. Без labs курс — это лекция; с labs — это навык.
  3. Не торопиться. 75-80 часов курса лучше растянуть на 8-10 недель. Каждый модуль строится на предыдущем: контексты Jinja не уложатся, пока не понятна разница parse vs execute фазы; adapter не уложится, пока не понятен Manifest.

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

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


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

Курс создан при участии Claude (Anthropic) как соавтора: ИИ помогал писать материалы, структурировать темы, разбирать Python-исходники dbt-core, генерировать примеры кода и диаграммы. Каждая глава проходила ручную сверку с первоисточниками — dbt-labs/dbt-core на GitHub, официальной документацией, исходным кодом адаптеров — но гарантировать 100% точность невозможно, особенно на быстро эволюционирующих темах (dbt Fusion, Semantic Layer v2).

Если вы заметили неточность, опечатку или хотите предложить улучшение — напишите в Telegram-группу курса. Для senior-курса это особенно ценно: вы можете найти gotcha, которого нет в моей версии, или указать на изменение в master ветке dbt-core, которое стоит включить.


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

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

Для senior-уровня особенно полезны сценарии:

  • «Покажи, как это устроено в master ветке» — когда хочется увидеть текущее состояние, не v1.11.5
  • «Какие edge cases есть в этом сценарии?» — когда хочется проверить понимание полнотой кейсов
  • «Как это связано с [другой части dbt-core]?» — когда нужно увязать концепцию через codebase
  • «У меня adapter для X — как написать материализацию Y?» — когда хочется примерить материал на свой проект

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


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

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

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

Telegram-канал

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

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

Проверка знанийKnowledge check
Чем подход senior-уровня к dbt принципиально отличается от middle?
ОтветAnswer
Middle решает проектные проблемы: 100 моделей в проде стабильно, CI/CD настроен, контракты выпущены, semantic layer работает. Senior решает платформенные: понимает что dbt-core делает на уровне Python-кода, читает source для дебага непонятных ошибок, пишет custom materializations и собственные адаптеры под нестандартные warehouses, проектирует dbt Mesh для нескольких команд, встраивает dbtRunner в orchestrator. Ключевая разница в источнике знания: middle опирается на документацию, senior — на исходники. Поэтому курс III открывает core/dbt/ репозитория и разбирает Manifest, GraphRunnableTask, ParserManager, ProviderContext, BaseAdapter — вещи, которые middle использует через макросы, не видя что внутри.

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

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

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

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

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

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