Orchestrating dbt Transformations
Build a small dbt Core project with staging and mart models, add data and unit tests, and trigger it from Airflow so transformations run as part of a scheduled pipeline rather than a manual command.
Prerequisites: a data warehouse to connect to (Postgres, DuckDB, or the Snowflake warehouse from an earlier project all work), and Python 3.10+.
dbt's job is narrow and specific: it takes SQL SELECT statements you write, compiles them with Jinja templating, and manages turning them into tables or views in your warehouse in dependency order — the T in ELT. As of mid-2026, dbt Core's stable 1.x line (currently in the 1.11.x series) remains the dominant Python-based distribution; dbt Labs is also previewing a ground-up Rust rewrite (dbt Core v2 / the Fusion engine) for faster parsing and compilation, but it's not yet the default most tutorials or production setups should target.
You'll build a small staging-then-marts project, add both classic data tests and dbt's newer unit tests (which validate your SQL logic against static fixture inputs rather than live warehouse data), then trigger the whole thing from an Airflow DAG so it runs on a schedule instead of by hand.
Initialize a dbt project
Write staging and mart models
Add data tests and a unit test
Generate and browse documentation, then trigger from Airflow
Secret Mission: Add a source freshness check
Before You Go
Test what you just learned
Self-testing is one of the best ways to retain new skills. Unlock project quizzes to check your understanding.
Log in to unlock0 / 7 complete
