Learning Platform
Глоссарий Troubleshooting
Урок 20.04 · 18 мин
Начальный
Fusion vs CoreMigrationdbt-autofixJunior pragma

В прошлом уроке мы узнали, что Fusion — это Rust-based GA-альтернатива dbt-core. Теперь сядем спокойно и решим: что нужно тебе как junior в 2026 году.

Краткий ответ

Учи dbt-core 1.10. Знай, что Fusion существует. Переходи когда работодатель скажет.

Это не из консерватизма — это потому, что:

  1. Большинство компаний на dbt-core. На собеседование зовут на dbt-core.
  2. Документация, туториалы, StackOverflow — про dbt-core.
  3. На маленьких проектах разница не заметна.
  4. Edge cases Fusion ещё ловят, и junior не должен решать сложные миграционные кейсы.

Но знать про Fusion обязательно — это вопрос на собеседовании.

Что Fusion реально ускоряет (и что нет)

Что Fusion ускоряет vs не ускоряет

Fusion улучшает parsing, compile и developer experience. Runtime SQL в warehouse — нет.

Ускоряетdbt parse, dbt list, dbt compile, IDE LSP, CI smoke checks
НЕ ускоряетdbt run/build runtime, тесты, snapshots, любая SQL-работа в warehouse

Конкретные цифры на проекте 500 моделей:

Операцияdbt-coreFusion
dbt --version (cold start)4s0.1s
dbt parse18s0.6s
dbt list --select state:modified+22s1.5s
dbt compile (500 моделей)28s4.5s
dbt build --select state:modified+4 минуты3 минуты 45 сек

Где выигрыш реальный — это CI smoke checks и IDE feedback. Где минимальный — реальная пересборка.


Compatibility: что точно работает, что может не работать

Работает в Fusion (99% случаев):

  • Все базовые команды: run, test, build, compile, seed, snapshot, docs
  • Все базовые селекторы: +model+, tag:, state:modified, resource_type:
  • Стандартный Jinja: {% set %}, {% for %}, {% if %}, ref(), source(), var(), env_var()
  • dbt_project.yml, profiles.yml — те же
  • manifest.json, run_results.json — совместимый формат
  • Основные warehouses: Snowflake, BigQuery, Databricks, Redshift, Postgres, DuckDB
  • Стандартные пакеты: dbt_utils, dbt_expectations, dbt_date, audit_helper
  • Generic tests, singular tests, custom generic tests
  • Unit tests (1.8+)
  • Incremental models, snapshots, seeds
  • Hooks: on-run-start, on-run-end, pre-hook, post-hook (SQL-only)

Может не работать или работает иначе:

  • Python pre/post-hooks с произвольной логикой — Fusion интерпретирует Jinja через Rust, экзотический Python код не поддерживается.
  • run_query с Python-обработкой — основной use case работает, но edge cases (циклы по результату с Python-логикой) могут отличаться.
  • Кастомные адаптеры — если warehouse редкий (Trino старых версий, кастомный fork), Fusion может ещё не поддерживать.
  • Старые версии популярных пакетов — лучше обновиться до последних (dbt_utils 1.3+).
  • Кастомные dispatch’и макросов — основные паттерны работают, экзотические могут потребовать правки.
  • Тонкие отличия в SQL generation — Fusion может генерировать слегка иной SQL (например, разные CTE-имена, чуть иной порядок INSERT-колонок). В 99% случаев результат идентичный, но не bit-perfect.

dbt-autofix

dbt Labs выпустила специальный инструмент:

pip install dbt-autofix
dbt-autofix run --project-dir ./my-project

dbt-autofix анализирует проект и сообщает:

  • Что точно сломается в Fusion
  • Что нужно поправить (deprecated синтаксис, кастомные конструкции)
  • Что нужно заменить (старые версии пакетов)

После исправления dbt-autofix пишет changes report. После этого можно безопасно переключаться на Fusion.


Junior pragma: твой план на 2026

Шаг 1: Учи dbt-core 1.10 как фундамент

Это базис всего. Команды, селекторы, материализации, тесты, Jinja, project structure. Всё, что в этом курсе — на dbt-core.

После курса ты будешь уметь работать с любым dbt-проектом — core или Fusion. Разница в нюансах, фундамент тот же.

Шаг 2: Знай про Fusion и Cloud на собеседовании

На вопрос «расскажи про развитие dbt», ответ:

  • dbt-core 1.10 — текущий stable
  • Fusion engine — Rust-based, GA Coalesce 2025, 30x parsing, column-level lineage, SQL-aware
  • dbt Cloud (Studio) — SaaS-платформа: IDE, Jobs, Explorer
  • Compatibility: Fusion обратносовместим по public API, dbt-autofix для миграции

Это продвинутый junior, который читает release notes и понимает direction.

Шаг 3: Сразу после устройства

В первую неделю на работе:

  • Узнай, на чём команда: dbt-core или Fusion. На какой версии (1.8, 1.9, 1.10)?
  • На чём warehouse — Snowflake / BigQuery / DuckDB?
  • Где запускается — Cloud Jobs / Airflow / GitHub Actions?
  • Какая стратегия CI — slim / full / nightly?

Если на Fusion: познакомься с особенностями LSP и Explorer. Если на core: знаешь, что делать.

Шаг 4: На проекте с медленным CI — предложи Fusion

Когда станешь middle (через 1-2 года), ты можешь предложить миграцию:

  • Замеряй текущий CI time (dbt list, dbt compile)
  • Прогони dbt-autofix — посмотри, что нужно поправить
  • Тестируй Fusion на одной dev-job в параллель
  • Сравни выходы — manifest, run_results
  • Если ОК — постепенно мигрируй

Junior на эти решения не зовут — это middle/senior работа. Но понимание трендов делает тебя ценнее.


Что НЕ нужно учить про Fusion сейчас

  • Внутренности Rust-движка — это для контрибьюторов в open-source.
  • Тонкие отличия SQL generation — будешь ловить в работе, не теоретически.
  • Performance tuning Fusion-specific — узнаешь когда столкнёшься.
  • dbt Mesh / Saas Discovery API / Semantic Layer — middle/senior темы.

Что точно полезно знать прямо сейчас

  1. Cloud существует, бесплатный Developer tier для портфолио.
  2. Fusion существует, GA Coalesce 2025, 30x parsing.
  3. dbt-core 1.10 — твой фокус для обучения.
  4. Совместимость: проект на core почти всегда работает в Fusion (тестируй через dbt-autofix).
  5. DuckDB супportед Fusion через dbt-duckdb (с октября 2025).
  6. Cloud не supports DuckDB — это разные продукты.

Краткая таблица «что использовать в 2026»

СценарийРешение
Учёба, домашний проектdbt-core 1.10 + DuckDB
Портфолио с production-обвязкойdbt-core + dbt Cloud Free + Snowflake trial
Маленькая команда (до 5), нет DevOpsdbt-core + dbt Cloud Team Jobs
Большая команда (10+), есть DevOpsdbt-core + Airflow / Dagster
Очень большой проект (500+ моделей), медленный CIdbt-core или мигрировать на Fusion
Multi-project organizationdbt Mesh (middle/senior тема)

Для junior главное — первая колонка. Остальное — контекст работодателя.


Попробуй сам

  1. Сравни два запуска на твоём jaffle_shop проекте:

    # core
    time dbt parse
    time dbt list --select +customers
    
    # fusion (если установил)
    time dbtf parse
    time dbtf list --select +customers

    На таком маленьком проекте разница в миллисекундах, но интересно.

  2. Запусти dbt-autofix run — посмотри, что он скажет про твой проект.

  3. Прочитай release notes Fusion 1.0 GA на docs.getdbt.com. Запомни три ключевые фичи (LSP, column lineage, SQL-aware compile).

  4. На любом dbt-related собеседовании ожидай вопрос про Fusion. Подготовь 30-секундный ответ.


Чек-лист

  • Fusion ускоряет: parsing, list, compile, IDE LSP, CI smoke checks (CI 12 мин -> 9-10 мин).
  • Fusion НЕ ускоряет: dbt run/build runtime, тесты, snapshots (всё warehouse-bound).
  • Compatibility: 99% проектов работают без изменений. Edge cases — Python hooks, экзотические адаптеры.
  • dbt-autofix — инструмент для миграции, сообщит, что поправить.
  • DuckDB supports Fusion (с октября 2025).
  • dbt Cloud НЕ supports DuckDB — разные продукты.
  • Junior pragma: учи dbt-core 1.10, знай про Fusion на собеседовании, переходи когда работодатель скажет.
  • На собеседовании 30-секундный ответ: «Fusion — Rust-based, GA Coalesce 2025, 30x parsing, SQL-aware compile, compatibility через dbt-autofix».
sqlfluff: SQL-aware статический анализ
Проверка знанийKnowledge check
На собеседовании в данные-команду спрашивают: 'Чем dbt-core отличается от dbt Fusion engine и почему мы (компания) пока на core?'. Дай 30-секундный ответ.
ОтветAnswer
dbt-core — Python-based open-source движок dbt, текущий стандарт. dbt Fusion engine — Rust-based замена, GA на Coalesce 2025. Основные преимущества Fusion: 30x parsing, 6x compile, мгновенный cold start CLI, SQL-aware compile с column-level lineage, type checking на этапе compile. Это полезно на больших проектах с медленным CI и для IDE-feedback через LSP. НЕ ускоряет runtime SQL в warehouse — это всё ещё работа Snowflake/BigQuery. Public API совместим, артефакты совместимы. Почему ваша компания пока на core — типично три причины: 1) Стабильность — core 1.10 проверен годами, Fusion ещё ловит edge cases. 2) Compatibility пакетов — основные (dbt_utils, dbt_expectations) работают, экзотические могут потребовать правок. 3) Размер проекта — если у вас до 200 моделей, разница в parsing незаметна, миграция не окупает риск. Когда вы будете готовы — dbt-autofix покажет, что нужно поправить. Я следил за развитием Fusion, и готов помочь когда команда решит мигрировать.

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

Результат: 0 из 0
Прикладной
Вопрос 1 из 6. В 2026 году junior должен учиться на dbt-core 1.10, а не на Fusion. Почему?

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

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

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

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