Model Materializations

Materializations are strategies that determine how dbt™ persists your models in the data warehouse. Think of them as different ways to store and update your transformed data.

Available Materialization Types

Type
Description
Best For

A saved query that runs on-demand

Simple transformations, real-time data needs

A physically stored copy of your data

BI tools, complex queries, frequent access

A table that updates only new/changed data

Large datasets, frequent updates

Code that's injected into dependent models

Large datasets, frequent updates

If you don't specify a materialization, dbt™ will create your model as a view by default.


Configuring Materializations

You can configure materializations in two ways:

1. Project Level (dbt_project.yml)

dbt_project.yml
models:
  your_project:
    finance:
      +materialized: table    # All finance models as tables
    staging:
      +materialized: view     # All staging models as views

2. Model Level (in .sql files)

{{ 
  config(
    materialized='table'
  )
}}

select * from ...

Choosing the Right Materialization

Consider these factors when selecting a materialization:

Factor
Consideration

🔄 Data Freshness

How current does the data need to be?

⚡ Query Performance

How current does the data need to be?

📊 Data Volume

How much data are you transforming?

💰 Resource Cost

What are your compute/storage constraints?


Learn more about each materialization type in their dedicated documentation pages:

Last updated

Was this helpful?