Skip to main content

unique_key

Configure the unique_key in the config block of your incremental model's SQL file, in your models/properties.yml file, or in your dbt_project.yml file.

models/my_incremental_model.sql
{{
config(
materialized='incremental',
unique_key='id'
)
}}

models/properties.yml
models:
- name: my_incremental_model
description: "An incremental model example with a unique key."
config:
materialized: incremental
unique_key: id

dbt_project.yml
name: jaffle_shop

models:
jaffle_shop:
staging:
+unique_key: id

Description

A column name or expression that is unique for the inputs of a snapshot or incremental model. dbt uses this to match records between a result set and an existing snapshot or incremental model, so that changes can be captured correctly.

In dbt Cloud "Latest" release track and from dbt v1.9, snapshots are defined and configured in YAML files within your snapshots/ directory. You can specify one or multiple unique_key values within your snapshot YAML file's config key.

caution

Providing a non-unique key will result in unexpected snapshot results. dbt will not test the uniqueness of this key, consider testing the source data to ensure that this key is indeed unique.

Default

This is a required parameter. No default is provided.

Examples

Use an id column as a unique key

In this example, the id column is the unique key for an incremental model.

models/my_incremental_model.sql
{{
config(
materialized='incremental',
unique_key='id'
)
}}

select * from ..
0