В мае 2025 года dbt Labs анонсировали и выпустили в public beta dbt Fusion engine — переписанную с нуля на Rust замену для классического dbt-core (Python). На Coalesce 2025 (октябрь) Fusion получил статус GA (general availability) и теперь стабильно работает в продакшене ряда крупных компаний.
К маю 2026, моменту этого курса, Fusion — это production-ready alternative dbt-core, но всё ещё не дефолт. Junior должен знать, что Fusion существует, понимать, зачем он нужен, и продолжать учиться на dbt-core 1.10, потому что:
- Большинство компаний на dbt-core (миграция идёт постепенно)
- Fusion compatibility ещё не 100% — некоторые edge cases
- Документация и обучение в массе на dbt-core
Зачем нужен был Fusion
dbt-core написан на Python. У Python в задаче парсинга и компиляции есть фундаментальные ограничения:
-
Старт медленный. Cold start dbt-core занимает 3-5 секунд (импорты, conftest, etc.). Для CLI-команды это много.
-
Парсинг 1000 моделей — 30 секунд. На больших проектах (500-2000 моделей) parsing занимает значительное время, особенно если изменился
dbt_project.ymlили packages. -
Jinja parser однопоточный. dbt parsит модели в одном Python-потоке, GIL мешает реальному распараллеливанию.
-
Нет настоящего SQL-понимания. dbt-core знает Jinja, но не понимает SQL — он передаёт SQL warehouse как чёрный ящик. Поэтому статический анализ типов колонок, проверка ref-валидности и т.д. ограничены.
Fusion решает все четыре:
Fusion — это движок, который под капотом делает то же самое, но быстрее и с большим static analysis. Для пользователя API похож, но не идентичен.
Что измеримо быстрее в Fusion
dbt Labs опубликовали бенчмарки на репрезентативном проекте (~500 моделей):
| Операция | dbt-core 1.10 | Fusion | Speedup |
|---|---|---|---|
| Cold start (CLI ready) | 3.5s | 0.1s | 35x |
| Full parse (500 моделей) | 18s | 0.6s | 30x |
dbt list (без выполнения) | 22s | 1.1s | 20x |
dbt compile (500 моделей) | 28s | 4.5s | 6x |
dbt build (50 моделей в DAG) | 90s | 75s | 1.2x |
Заметь: runtime ускорение мизерное (dbt build 1.2x). Это потому что время dbt build — это в основном время в warehouse (выполнение SQL). Fusion не ускоряет Snowflake/BigQuery — они работают как работали.
Где Fusion реально сияет — это dbt list, dbt compile, dbt parse. То есть workflow:
- Разработчик в IDE: каждое нажатие save — Fusion перепарсивает мгновенно, LSP-сервер мгновенный.
- CI smoke check:
dbt list --select state:modified+— раньше 30 секунд, теперь 1.5. PR check почти мгновенный. - Cold-start CLI:
dbt --help— раньше 4 секунды, теперь моментально. Удобство.
SQL-aware compile
Это главное архитектурное преимущество Fusion. dbt-core не понимает SQL — он просто разворачивает Jinja и шлёт в warehouse. Если ты в SELECT перечислил несуществующую колонку, dbt-core это узнает только на этапе dbt run (когда warehouse скажет «column does not exist»).
Fusion включает встроенный SQL parser (через DataFusion / sqlparser-rs). Он понимает SQL семантически и может на этапе compile:
-
Проверять валидность ref-колонок. Ты пишешь
{{ ref('stg_orders') }}.customer_id— Fusion знает, чтоstg_ordersимеет колонкуcustomer_id(из schema из catalog), и подсветит ошибку, если её нет. -
Lineage на уровне колонок (column-level lineage). dbt-core знает, что customers зависит от stg_customers. Fusion знает: «колонка customers.email берётся из stg_customers.email через SELECT». Это огромно для impact analysis: «если я поменяю формат email в stg_customers, какие downstream-колонки сломаются?» — Fusion отвечает точно.
-
Type checking.
WHERE created_at = 'хорошее утро'— Fusion заметит, чтоcreated_atэто TIMESTAMP, литерал — TEXT, и выдаст warning до запуска. -
Dead code detection. Если ты добавил колонку в SELECT, но никто её не использует downstream — Fusion может подсветить.
Это превращает dbt в настоящий SQL-aware compiler, а не просто Jinja-разворачиватель.
Что меняется в developer experience
С Fusion типичный workflow аналитика становится:
-
Save файла -> мгновенный feedback через LSP. Все ошибки подсвечены сразу: missing ref, missing column, type mismatch.
-
dbt compileза 4 секунды вместо 28. Можно компилировать на каждый save без боли. -
Column-level lineage в Explorer. Можешь кликнуть на колонку и увидеть, откуда она пришла и где используется.
-
IDE-плагины (VS Code, Cursor, Zed) с настоящим LSP — go to definition для ref(), hover info, refactor across project.
-
CI быстрее. PR checks за минуты, не за десятки минут.
Это особенно ценно на больших проектах (1000+ моделей). На junior-проекте на 20 моделей разница менее заметна.
Что НЕ ускоряет Fusion
- Warehouse SQL execution. Snowflake / BigQuery / DuckDB обрабатывают запросы как раньше.
- Сетевые задержки до warehouse.
- Тесты — это всё ещё SELECT-запросы в warehouse.
- Snapshots — тоже warehouse-bound.
Поэтому полный dbt build ускоряется только на 10-20%. Если у тебя проблема «прод-билд занимает 3 часа», Fusion это не решит — проблема в warehouse.
Compatibility
Fusion декларирует совместимость с dbt-core по public API. То есть:
- Те же команды (
dbt run,dbt build,dbt test) - Тот же синтаксис Jinja
- Те же селекторы
- Те же артефакты (manifest.json, run_results.json)
- Те же
dbt_project.ymlиprofiles.yml
В большинстве случаев dbt-core проект работает в Fusion без изменений. Но есть edge cases:
-
Custom Python макросы (run_query с Python-кодом) — Fusion интерпретирует Jinja через Rust, не Python. Некоторые экзотические макросы могут работать иначе.
-
dbt_utils / dbt_expectations — основные пакеты адаптированы, но менее популярные пакеты могут не работать с Fusion.
-
Pre/Post-hooks с Python — Fusion подерживает SQL-hooks, Python-логика в pre-hook ограничена.
-
Адаптеры. Fusion supports main warehouses: Snowflake, BigQuery, Databricks, Redshift, Postgres. DuckDB поддерживается через
dbt-duckdb(с oct 2025). Для редких warehouses может пока не работать. -
Тонкие отличия в SQL generation — Fusion может генерировать слегка иной SQL (другие имена CTE, разный порядок CREATE INDEX и т.д.). В 99% случаев результат идентичный, но bit-perfect совпадения нет.
dbt Labs выпустила инструмент dbt-autofix — он анализирует проект на dbt-core и сообщает, что нужно поправить для миграции на Fusion.
Как попробовать
Установка:
# Через pip (dbt-fusion)
pip install dbt-fusion
# Или через standalone binary
curl -fsSL https://fusion.getdbt.com/install.sh | sh
Использование — те же команды, но через dbtf (или dbt если ставил pip-вариант):
$ dbtf --version
dbt fusion 1.0.5
$ dbtf debug
14:23:15 Running with dbt fusion 1.0.5
14:23:15 Configuration: [OK]
14:23:15 Connection test: [OK]
$ dbtf parse
0.6s
Parsed 200 models, 50 tests, 8 sources
$ dbtf build --select +customers
... выполнение как обычно ...
Все артефакты в target/ совместимы с core — можно переключаться обратно если что-то не работает.
В dbt Cloud — checkbox в environment settings: «Use Fusion engine». Cloud сам обновит окружение.
Когда переходить на Fusion (для junior)
Сейчас (2026): нет необходимости.
Junior должен учиться на dbt-core 1.10 потому что:
- Подавляющее большинство компаний на dbt-core. Когда устроишься, скорее всего получишь core, не Fusion.
- Документация в основном про core. Туториалы, StackOverflow, курсы.
- Performance не критичен на маленьких проектах (до 100 моделей разница в секундах не заметна).
- Edge cases. Fusion стабилен, но всё ещё иногда удивляет.
Когда переходить: когда твоя компания мигрирует, или когда ты работаешь на проекте 500+ моделей с медленным CI.
Знать про Fusion на собеседовании — обязательно. На вопрос «слышал про Fusion?» правильный ответ: «Да, это Rust-based замена dbt-core, GA на Coalesce 2025, 30x parsing, SQL-aware compile с column-level lineage. Junior-проекты пока на core, миграция через dbt-autofix постепенно».
dbt Mesh — отдельная концепция
Часто Fusion упоминается в связке с dbt Mesh — это архитектурный паттерн для очень больших организаций, где разные команды работают на разных под-проектах и они связываются через cross-project ref. Mesh — это не Fusion, это про группы, публичные/приватные модели, контракты.
К маю 2026 Mesh — это middle/senior тема. Junior на это пока не смотрит. Главное — знать, что термин существует и что это не то же самое, что Fusion.
Попробуй сам
- Установи Fusion в отдельный venv:
pip install dbt-fusion. - Открой Jaffle Shop проект, запусти
dbtf debug && dbtf parse(если адаптер DuckDB поддерживается). Сравни тайминги с обычным dbt. - Запусти
dbtf build --select customers— проверь, что результат в DuckDB идентичен core-варианту. - Прочитай release notes Fusion 1.0 на docs.getdbt.com.
Чек-лист
- Fusion = Rust-based замена dbt-core от dbt Labs. Public beta 28 мая 2025, GA Coalesce октябрь 2025.
- 30x parsing, 6x compile, runtime не ускоряет (warehouse-bound).
- SQL-aware compile — column-level lineage, type checking, dead code detection.
- Public API compatibility — те же команды, артефакты, конфиги.
- Edge cases: Python pre-hooks, экзотические пакеты, тонкие SQL-различия.
- dbt-autofix — инструмент для миграции с core на Fusion.
- Junior pragma: учиться на core, знать про Fusion на собеседовании.
- dbt Mesh — отдельный архитектурный паттерн, не Fusion. Middle/senior тема.