Model configurations
Related documentation
Available configurations
Model-specific configurations
- Project file
- Property file
- Config block
General configurations
- Project file
- Property file
- Config block
Warehouse-specific configurations
Configuring models
Models can be configured in one of three ways:
- Using a
config()
Jinja macro within a model - Using a
config
resource property in a.yml
file - From the
dbt_project.yml
file, under themodels:
key.
Model configurations are applied hierarchically. The most-specific config always "wins": In the project file, configurations applied to a marketing
subdirectory will take precedence over configurations applied to the entire jaffle_shop
project. To apply a configuration to a model, or directory of models, define the resource path as nested dictionary keys.
Example
dbt_project.yml
Configuring directories of models in To configure models in your dbt_project.yml
file, use the models:
configuration option. Be sure to namespace your configurations to your project (shown below):
name: dbt_labsmodels:# Be sure to namespace your model configs to your project namedbt_labs:# This configures models found in models/events/events:+enabled: true+materialized: view# This configures models found in models/events/base# These models will be ephemeral, as the config above is overriddenbase:+materialized: ephemeral...
Apply configurations to one model only
Some types of configurations are specific to a particular model. In these cases, placing configurations in the dbt_project.yml
file can be unwieldy. Instead, you can specify these configurations at the top of a model .sql
file, or in its individual yaml properties.
{{config(materialized = "table",sort = 'event_time',dist = 'event_id')}}select * from ...
version: 2models:- name: base_eventsconfig:materialized: tablesort: event_timedist: event_id