Snapshot configurations
Related documentation
Available configurations
Snapshot-specific configurations
Resource-specific configurations are applicable to only one dbt resource type rather than multiple resource types. You can define these settings in the project file (dbt_project.yml
), a property file (models/properties.yml
for models, similarly for other resources), or within the resource’s file using the {{ config() }}
macro.
The following resource-specific configurations are only available to Snapshots:
- Project file
- YAML file
- Config block
General configurations
General configurations provide broader operational settings applicable across multiple resource types. Like resource-specific configurations, these can also be set in the project file, property files, or within resource-specific files.
- Project file
- YAML file
- Config block
Configuring snapshots
Snapshots can be configured in multiple ways:
Snapshot configurations are applied hierarchically in the order above with higher taking precedence.
Examples
The following examples demonstrate how to configure snapshots using the dbt_project.yml
file, a config
block within a snapshot, and a .yml
file.
-
Apply configurations to all snapshots
To apply a configuration to all snapshots, including those in any installed packages, nest the configuration directly under the
snapshots
key:dbt_project.ymlsnapshots:
+unique_key: id -
Apply configurations to all snapshots in your project
To apply a configuration to all snapshots in your project only (for example, excluding any snapshots in installed packages), provide your project name as part of the resource path.
For a project named
jaffle_shop
:dbt_project.ymlsnapshots:
jaffle_shop:
+unique_key: idSimilarly, you can use the name of an installed package to configure snapshots in that package.
-
Apply configurations to one snapshot only
You can also use the full resource path (including the project name, and subdirectories) to configure an individual snapshot from your
dbt_project.yml
file.For a project named
jaffle_shop
, with a snapshot file within thesnapshots/postgres_app/
directory, where the snapshot is namedorders_snapshot
(as above), this would look like:dbt_project.ymlsnapshots:
jaffle_shop:
postgres_app:
orders_snapshot:
+unique_key: id
+strategy: timestamp
+updated_at: updated_atYou can also define some common configs in a snapshot's
config
block. We don't recommend this for a snapshot's required configuration, however.dbt_project.ymlversion: 2
snapshots:
- name: orders_snapshot
+persist_docs:
relation: true
columns: true