Skip to main content

snapshot_meta_column_names

Available in dbt Core v1.9+. Select v1.9 or newer from the version dropdown to view the configs. Try it now in the dbt Cloud "Latest" release track.

snapshots/schema.yml
snapshots:
- name: <snapshot_name>
config:
snapshot_meta_column_names:
dbt_valid_from: <string>
dbt_valid_to: <string>
dbt_scd_id: <string>
dbt_updated_at: <string>

snapshots/<filename>.sql
{{
config(
snapshot_meta_column_names={
"dbt_valid_from": "<string>",
"dbt_valid_to": "<string>",
"dbt_scd_id": "<string>",
"dbt_updated_at": "<string>",
}
)
}}

dbt_project.yml
snapshots:
<resource-path>:
+snapshot_meta_column_names:
dbt_valid_from: <string>
dbt_valid_to: <string>
dbt_scd_id: <string>
dbt_updated_at: <string>

Description

In order to align with an organization's naming conventions, the snapshot_meta_column_names config can be used to customize the names of the metadata columns within each snapshot.

Default

By default, dbt snapshots use the following column names to track change history using Type 2 slowly changing dimension records:

FieldMeaningNotes
dbt_valid_fromThe timestamp when this snapshot row was first inserted and became valid.The value is affected by the strategy.
dbt_valid_toThe timestamp when this row is no longer valid.
dbt_scd_idA unique key generated for each snapshot row.This is used internally by dbt.
dbt_updated_atThe updated_at timestamp of the source record when this snapshot row was inserted.This is used internally by dbt.

However, these column names can be customized using the snapshot_meta_column_names config.

warning

To avoid any unintentional data modification, dbt will not automatically apply any column renames. So if a user applies snapshot_meta_column_names config for a snapshot without updating the pre-existing table, they will get an error. We recommend either only using these settings for net-new snapshots, or arranging an update of pre-existing tables prior to committing a column name change.

Example

snapshots/schema.yml
snapshots:
- name: orders_snapshot
relation: ref("orders")
config:
unique_key: id
strategy: check
check_cols: all
snapshot_meta_column_names:
dbt_valid_from: start_date
dbt_valid_to: end_date
dbt_scd_id: scd_id
dbt_updated_at: modified_date

The resulting snapshot table contains the configured meta column names:

idscd_idmodified_datestart_dateend_date
160a1f1dbdf899a4dd...2024-10-02 ...2024-10-02 ...2024-10-02 ...
2b1885d098f8bcff51...2024-10-02 ...2024-10-02 ...
0