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
snapshotskey:dbt_project.yml
snapshots:
+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.yml
snapshots:
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.ymlfile.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
configblock. 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