Modular data modeling

Transform raw data into human-usable metrics.

Why modular

How you transform data has a huge impact on the happiness and productivity of your team. Have you ever attempted to debug a long stored procedure that someone else wrote?

With modular data modeling, anyone who knows SQL can make sense of your team's work, and build on it when the time comes.

Modularity

Leverage for data teams

dbt is a framework for writing high-leverage SQL transformation code.

Everything is a SELECT

Define transformations in your native SQL syntax.

Dependency management

Layer your models with the ref() function, and dbt handles the rest.

Clear project structure

Express your data warehouse design in terms of sources, staging models and marts.

Macros and packages

Write SQL that writes itself, to avoid repeating frequently-used statements (ex dbt_utils).

Quality-of-life considerations

dbt makes easy things easy, and hard things possible.

Materializations

Define materializations in code

Set your materialization logic inline with your SQL transformations.

dbt supports materializing models as tables, incremental tables, views, or a custom materialization of your design.

Incrementality

Handle large datasets gracefully

Long-running SQL transformations can eat up development time and drive up your cloud data warehouse bill.

dbt's support for incremental transformations allows you to only run models on newly-arrived data.

Snapshots

Track slowly-changing dimensions

Mutable source tables are updated over time, an order is fulfilled, or a customer cancels their subscription.

dbt's snapshots allow you to snap source tables at a point in time.

Model data where it lives

Whether your analytics data is stored in a cloud warehouse, data lake, lake house or beach house - you can model and transform it with dbt.

For data models of any shape

Whether your team prefers your data tall or short, narrow or wide, your data transformation tool should support your efforts.