Skip to main content

Analytics Engineering with dbt

Learn to build tested, documented SQL transformations with dbt: staging to marts, materializations, incremental models, tests, and lineage.

~3.5 hours
12 Topics
Hands-on Scenarios

What You'll Learn

Understanding Why Raw SQL Scripts Stop Working

An analyst at acme-shop opens a folder called sql_scripts_final_v3.

Setting Up Your First dbt Project

Installing dbt and connecting to Postgres Install dbt Core with the adapter for your warehouse, in the virtual environment you use for the lab.

Building the Staging, Intermediate, and Marts Layers

A widely used dbt structure has three layers: staging, intermediate, and marts.

Choosing the Right Materialization

A materialization is how dbt physically builds a model in the warehouse. Same SELECT, different storage.

Testing dbt Models So Broken Data Never Reaches a Dashboard

A model that runs without error is not the same as a model that is correct.

Troubleshooting a Mart That Shows Duplicate Revenue

On a Monday morning a teammate says the revenue mart is higher than finance's number. dbt run finished with no errors.

Skills You'll Master

DBTANALYTICS-ENGINEERINGSQLDATA-TESTINGDATA-WAREHOUSE

Curriculum Index12 topics

1

Understanding Why Raw SQL Scripts Stop Working

An analyst at acme-shop opens a folder called sql_scripts_final_v3.

2

Setting Up Your First dbt Project

Installing dbt and connecting to Postgres Install dbt Core with the adapter for your warehouse, in the virtual...

3

Building the Staging, Intermediate, and Marts Layers

A widely used dbt structure has three layers: staging, intermediate, and marts.

4

Choosing the Right Materialization

A materialization is how dbt physically builds a model in the warehouse. Same SELECT, different storage.

5

Testing dbt Models So Broken Data Never Reaches a Dashboard

A model that runs without error is not the same as a model that is correct.

6

Troubleshooting a Mart That Shows Duplicate Revenue

On a Monday morning a teammate says the revenue mart is higher than finance's number. dbt run finished with no errors.

7

Documenting Models and Reading the Lineage Graph

Describing models and columns The exact wording of this output differs between versions; what matters is the local...

8

Using Packages and Knowing What Exists Beyond This Module

Installing dbt_utils A package is a shared dbt project you install into yours.

9

Running dbt in CI

Everything so far ran on your laptop. The real value appears when dbt sits inside a team's pull request process.

10

Running the Hands-on Lab

You will build 7 models and 14 tests on the acme-shop data.

11

Understanding What You Built and What Comes Next

What you built You turned raw acme-shop tables into a tested, documented dbt project: four staging models, one...

12

Reviewing the Quick Reference and Common Mistakes

Quick reference Common mistakes Using the table materialization on a very large model rebuilds everything on every run...

Career Impact

Roles that use the skills in this module.

  • Data Engineer

  • Platform Engineer

See how this is asked in interviews

Practice on the Coding Sheet

Not a software engineer sheet. Every problem comes from real DevOps, SRE, Platform and Cloud interviews, from your first script to a system you build yourself.

Open the Coding Sheet

Frequently Asked Questions

No. dbt handles only the transform step. Tools like Airflow, Fivetran, or Debezium land raw data in the warehouse first, and dbt turns those raw tables into clean, tested models.

dbt run builds models, dbt test runs tests, and dbt build does both in dependency order. build skips anything downstream of a failed model or test, so it is the safest command for CI.

Use one when rebuilding the whole table every run is too slow or costly. Start with a view or table, and move to incremental only when the data volume makes full rebuilds a real problem.

No. dbt Core is free and open source and runs from the command line. dbt Cloud adds hosted scheduling, CI, and docs, which are useful but not required to learn or use dbt.