Describe dbt's role and how it differs from traditional ETL

Declarative warehouse transformation vs imperative ETL.
Position dbt as ELT's T with lineage, tests, docs; contrast with Python ETL using external compute and Airflow only scheduling tasks.
What's really being asked
This question probes whether you understand the modern analytics architecture and the separation of concerns between transformation logic, orchestration, and compute. Interviewers want to see that you know dbt is not just a query runner but a framework that brings software engineering discipline to analytics, and that you can clearly distinguish its declarative, in-warehouse approach from imperative Python scripts or general-purpose schedulers.
The full answer
First, position dbt as the transformation layer that executes SQL directly inside the cloud data platform, turning raw warehouse data into trusted data products. Second, explain that dbt uses SQL select statements and Jinja templating to create modular data models, while automatically generating lineage, tests, documentation, and contracts. Third, contrast this with traditional Python ETL where you write imperative code to extract, transform, and load data using external compute, which is harder to maintain and lacks built-in governance. Fourth, clarify that Airflow is an orchestrator that schedules and monitors task graphs but has no native understanding of data models, columns, or transformation semantics, whereas dbt manages the transformation graph and dependency resolution natively. Fifth, note that dbt complements rather than replaces Airflow, since Airflow can trigger dbt jobs while dbt handles the transformation logic.
The mistakes people make
A major red flag is saying dbt replaces Airflow entirely, which reveals confusion about the boundary between orchestration and transformation. Another mistake is describing dbt as merely a SQL scheduler or runner, missing its framework features like testing, version control integration, and CI/CD. Candidates also err by claiming Python ETL is always superior for complex logic; a nuanced answer acknowledges dbt supports advanced use cases through macros and hooks while still keeping the workflow SQL-first.
What usually comes next
Expect the interviewer to ask how you would handle transformations that are difficult to express in SQL. They may also ask how you enforce data contracts between teams, or how you optimize models to reduce warehouse compute costs. Another common thread is how dbt integrates with other data tools given its structured context of lineage, tests, and documentation.
A concrete example
Imagine a company that has loaded raw transaction records into their cloud data platform. With dbt, an analyst writes a staging model that cleans and deduplicates records using a SQL select statement with Jinja templating. The dbt engine compiles this project, executes the transformation graph in the warehouse, and produces metadata showing that a downstream revenue_summary model depends on this staging table. Built-in tests assert uniqueness on transaction_id and referential integrity to a customers dimension. In a traditional Python ETL approach, an engineer writes imperative code to pull data out of the warehouse into external compute, transform it, and load it back, which fragments lineage and requires manual testing and documentation. Airflow could schedule either workflow, but without dbt it would only trigger a task blind to the schema and dependencies inside the script.
Interview question
Which statement best describes the separation of concerns between dbt, traditional Python ETL, and Airflow?
- a.dbt is essentially a SQL scheduler that runs queries on external compute and lacks built-in testing or lineage.
- b.dbt replaces Airflow by natively orchestrating general data pipelines including file transfers and API calls.
- c.dbt executes declarative SQL transformations inside the warehouse, while Airflow schedules tasks and Python ETL relies on external compute.Correct
- d.Python ETL and dbt both transform data inside the warehouse, but Python ETL is preferred for complex logic because it offers more control than SQL.
Why? this is the answer
dbt runs declarative SQL directly in the warehouse with native lineage, testing, and documentation, whereas Python ETL uses external compute and Airflow only orchestrates tasks without transformation semantics. Option B is wrong because dbt complements rather than replaces Airflow, as it does not orchestrate general workflows like file transfers or API calls.
Just read this? Test yourself on what you have been reading.
Read the original → docs.getdbt.com
- #dbt
- #elt
- #data-engineering
- #analytics
- #airflow
You just looked this up. Could you explain it out loud?
That is the part interviews actually test. Tezvyn takes questions like this one and gives you what the interviewer is really checking, the answer that lands, and the mistake that ends the conversation, in the four minutes before your next meeting.
The iPhone app is on the way
We are building it. Until it lands, nothing here is held back from you: every interview card, your saved cards, streaks and the job board all work in Safari, plus hundreds of free practice quizzes of thirty questions each. Sign in and it all carries over to the app the day it arrives.
Want it as an icon? Tap Share at the bottom of Safari, then Add to Home Screen. It opens full screen and the cards you have read stay available offline.
We are hiring for this. Every open role lists the topics its interview covers, so you can prepare for the real thing rather than guessing.
See open roles