ScopeFlow

dbt vs Airflow: what each one is actually for

They get lumped together as "the modern data stack," but dbt and Airflow solve different problems, and the confusion usually comes from teams reaching for one when they need the other.

What Airflow is for

Airflow is an orchestrator. It answers the question "in what order, on what schedule, and with what retry/alerting behavior should these tasks run," and a "task" can be almost anything: a Python script, a database query, an API call, a Docker container. Airflow doesn't know or care what a task actually does; it just runs it, tracks whether it succeeded, and tells you when it didn't.

What dbt is for

dbt is a transformation tool, specifically for the "T" in ELT. It answers the question "given raw tables already sitting in my warehouse, how do I turn them into clean, tested, documented models," using SQL (or Python models), with built-in dependency resolution, testing, and documentation generation. dbt doesn't extract data from source systems and doesn't decide when things run; it assumes the raw data is already there and focuses entirely on what happens to it next.

Where they meet

In a typical setup, Airflow is the thing that calls dbt, usually as one task in a larger DAG that also handles extraction (pulling data from source systems into the warehouse) and anything downstream of the transform (like refreshing a BI tool's cache). dbt itself doesn't need Airflow to run at all; plenty of smaller teams just run dbt build on a simple cron job or through dbt Cloud's own scheduler, and only reach for Airflow once they have enough moving parts (multiple data sources, cross-system dependencies, tasks that aren't SQL) that a real orchestrator earns its keep.

The short version

If your problem is "my SQL transformations are a mess of unordered scripts with no tests or lineage," you need dbt. If your problem is "I have a dozen jobs across different systems that need to run in the right order with retries and alerting," you need an orchestrator, Airflow or otherwise. Most data platforms eventually need both; very few need to start with both on day one.