How dbt's core materialization types differ
Materializations control how dbt turns a model's SELECT statement into objects in your warehouse, balancing build time, storage cost, and query performance. dbt supports four core materializations—view, table, incremental, and ephemeral—configurable per model, folder, or project via the materialized config. Choosing the right one is central to optimizing model performance and warehouse spend.
1 · Learn the must-know
- Views are the default materialization; dbt wraps the SELECT in a CREATE VIEW statement, so no data is stored but every query re-runs the full logic against the underlying tables.
- Table materialization runs a CREATE TABLE AS (or equivalent) each run, fully rebuilding the table from scratch, which is simple and fast to query but can be slow and costly to build for large datasets.
- Incremental materialization builds a table once, then on subsequent runs only inserts/updates new or changed rows using a configurable
unique_keyandis_incremental() macro logic, dramatically reducing processing time for large, append-heavy datasets. - Ephemeral models are not built as database objects at all; dbt inlines their SQL as a CTE into downstream models, useful for lightweight reusable logic but they cannot be queried directly and add complexity to compiled SQL if overused.
- Incremental models require careful handling of schema changes and late-arriving/updated data (via strategies like merge, delete+insert, or append) and often need a full-refresh run to rebuild correctly when logic changes.
- Materialization choice should be driven by downstream query patterns and rebuild cost: staging/light-transform models often use views or ephemeral, marts/reporting layers often use tables, and large fact tables typically use incremental.
2 · Check your understanding
You have a lightweight staging model that filters and renames columns from a source table. It contains no heavy aggregations, and three downstream models each reference it. You want the SQL logic reused wherever it's referenced without dbt creating any persistent database object for the staging model itself. Which materialization should you configure, and what mechanism makes it work?
What you have tried across dbt Analytics Engineering's objectives, not a readiness score.
Developing and optimizing dbt models45.16% of the exam*0 of 14 tried
Managing dbt models governance9.68% of the exam*0 of 3 tried
Debugging data modeling errors16.13% of the exam*0 of 5 tried
Troubleshooting and optimizing dbt pipelines6.45% of the exam*0 of 2 tried
Implementing dbt tests9.68% of the exam*0 of 3 tried
Implementing and maintaining external dependencies6.45% of the exam*0 of 2 tried
Leveraging the dbt state6.45% of the exam*0 of 2 tried
* Our estimate. dbt Labs publishes no section weights.
3 · Keep going
Ready for more? Take a weighted mock or try free practice questions.