Intermediate

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.

~2.5h
0 / 7 steps
🚀
Intro

Before We Start

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

Secret Mission: Add a source freshness check

🧹
Wrap Up

Before You Go

Pro

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 unlock