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 snapshotsTo apply a configuration to all snapshots, including those in any installed packages, nest the configuration directly under the snapshotskey:dbt_project.ymlsnapshots:
 +unique_key: id
- 
Apply configurations to all snapshots in your projectTo 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 onlyYou 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