Blog
dbt Fusion Support Comes to Dagster

dbt Fusion Support Comes to Dagster

August 22, 2025
dbt Fusion Support Comes to Dagster

Learn how to use the beta dbt Fusion engine in your Dagster pipelines, and the technical details of how support was added

We’re excited to share support for the dbt Fusion engine has been added to the Dagster dbt integration. 

The Fusion engine is in beta, as is the integration Dagster, but if you’re chomping at the bits to explore the new features, then now you can!

With Fusion there are some pretty enticing improvements. One of the most notable being the performance gains; Fusion compiles and parses projects up to 30x faster than dbt Core, slashing development and iteration times from minutes to milliseconds. But on top of that, it also brings new features, like:

  • State aware caching for cost reduction
  • A SQL-aware language server and improved IDE experience
  • Improved metadata management with tagging and column-level lineage

By fusing dbt Fusion into Dagster’s dbt integration, you're getting:

  • Hyper-fast iteration - Instant feedback loops make experimentation and debugging much more efficient.
  • Smarter editing experience - SQL authoring becomes proactive with insights baked right into your editor.
  • Efficient execution - Only changed models rerun, saving both time and compute costs.

Enabling Fusion support in the Dagster dbt integration

If you’re ready to try Dagster’s dbt integration with Fusion, here’s all you need to do:

  1. Install dbt Fusion dbt Fusion is distributed as a standalone Rust binary. Follow the dbt installation docs or use the provided install script to get the CLI on your PATH.
  1. Skip installing dbt-core If you want to test the pure Fusion flow, you don’t need dbt-core in your Python environment. Dagster will detect this and automatically switch to CLI-based methods.
  1. Point Dagster to your dbt project Use the standard DbtCliResource setup in your definitions:
1from dagster_dbt import DbtCliResource‍
2
3dbt_resource = DbtCliResource(project_dir="path/to/your/dbt/project")
  1. Pass the project to your @dbt_assets:
1from dagster_dbt import dbt_assets, DbtProject‍
2
3project = DbtProject("path/to/your/dbt/project")‍
4
5@dbt_assets(manifest=project.manifest_path, project=project)
6def my_assets(context, dbt: DbtCliResource):
7    yield from dbt.cli(["build"], context=context).stream()
  1. Run as usual Materialize your assets with Dagster’s orchestration, and enjoy the same asset materializations, checks, and metadata you get with dbt Core—now powered by dbt Fusion’s speed.

The technical details: How we added dbt Fusion support to Dagster

Supporting the dbt Fusion engine in Dagster’s dagster-dbt library required rethinking our integration interacts with dbt itself. Fusion is written in Rust and ships without the dbt-core Python package, so we needed to make the integration work both with and without the Python APIs.

Here’s what we changed under the hood:

  • Removed the hard dependency on dbt-core The integration now detects whether dbt-core is installed. If it is, we keep using the familiar Python methods for things like resolving selection strings. If it isn’t, we fall back to invoking dbt CLI commands directly, so Fusion users get full functionality without Python bindings.
  • Compatibility shims for missing Python types When dbt-core isn’t installed we now provide internal stand-ins for these so Dagster can still interpret run results and surface rich asset events.
  • Updated log parsing for Fusion’s event format dbt Fusion’s CLI output consolidates all model/test execution logs into a NodeFinished event type, whereas dbt Core uses multiple result event types. We created separate parser subclasses for each engine so asset materializations, checks, and metadata extraction remain consistent.
  • Manifest differences handled transparently Fusion’s manifest output lacks a child_map field, so Dagster now builds that mapping dynamically to preserve lineage tracking and check associations.
  • Engine-aware selection logic If Python APIs are unavailable, Dagster now resolves --select/--exclude/--selector arguments by calling dbt list --output json under the hood, ensuring selections behave identically in both environments.

The result: whether you’re running dbt Core or dbt Fusion, Dagster gives you the same asset awareness, check integration, and orchestration experience, but if you opt to use the new Fusion engine, then you’ll get to see some pretty awesome performance improvements!

We're always happy to hear your feedback, so please reach out to us! If you have any questions, ask them in the Dagster community Slack (join here!) or start a Github discussion. If you run into any bugs, let us know with a Github issue. And if you're interested in working with us, check out our open roles!

Dagster Newsletter

Get updates delivered to your inbox

Latest writings

The latest news, technologies, and resources from our team.

dbt Fusion Support Comes to Dagster

August 22, 2025

dbt Fusion Support Comes to Dagster

Learn how to use the beta dbt Fusion engine in your Dagster pipelines, and the technical details of how support was added

What CoPilot Won’t Teach You About Python (Part 2)

August 20, 2025

What CoPilot Won’t Teach You About Python (Part 2)

Explore another set of powerful yet overlooked Python features—from overload and cached_property to contextvars and ExitStack

Dagster’s MCP Server

August 8, 2025

Dagster’s MCP Server

We are announcing the release of our MCP server, enabling AI assistants like Cursor to seamlessly integrate with Dagster projects through Model Context Protocol, unlocking composable workflows across your entire data stack.

No items found.