Configuring a snapshot to track slowly changing data
As of dbt v1.9+, snapshots can be defined in YAML files under a snapshots: key, similar to how sources and models are configured, rather than only using the legacy Jinja/SQL snapshot block syntax. YAML snapshots use select to define the query (often referencing a source or model) and require a config block for strategy, unique_key, and check/timestamp columns. This objective tests your ability to correctly structure and configure a YAML-based snapshot definition.
Must-know
- YAML snapshots are defined in .yml files under a
snapshots:top-level key, with each snapshot having anameand arelationorselectpointing to the source table. - Required config fields are
strategy(timestamp or check),unique_key, and eitherupdated_at(for timestamp strategy) orcheck_cols(for check strategy). - The
target_schemaconfig is deprecated in favor of letting snapshots follow the same custom schema logic as models; useschemaconfig orgenerate_schema_namemacro instead when applicable. - You can still use the legacy
.sqlsnapshot block syntax with{% snapshot %}...{% endsnapshot %}, but YAML snapshots are the current recommended approach and both cannot define the same snapshot simultaneously. - Snapshots configured in YAML support the same config options as SQL-defined snapshots, including
invalidate_hard_deletes,strategy, andunique_key, and can also be configured viadbt_project.ymlunder thesnapshots:key for project-wide defaults. - A common gotcha: the
select(orrelation) in a YAML snapshot must resolve to a single table/query representing the mutable source data being tracked—snapshots still cannot be built on ephemeral models.
You are configuring a new snapshot in a YAML file located in your snapshots/ directory. The source table has a reliable updated_at column that changes every time a row is modified. Which YAML config block correctly defines this snapshot using the timestamp strategy?
What you have tried across dbt Analytics Engineering's objectives, not a readiness score.
Developing and optimizing dbt models
- Tracing and confirming a model's upstream raw sources
- How dbt's core materialization types differ
- Keeping models modular and avoiding repeated logic
- What each core dbt command actually does
- Shaping a model's dependency graph so it stays readable
- Setting project-wide configuration in dbt_project.yml
- Pulling in and using a dbt package
- Writing a model in Python instead of SQL
- Granting model access through the grants config
- Configuring a snapshot to track slowly changing data
- Picking the right incremental strategy for a dataset
- Dry-running a model to check its logic and schema before a real build
- Sampling a model run before a full build
- What microbatch and other advanced materializations are for
Managing dbt models governance
Debugging data modeling errors
Troubleshooting and optimizing dbt pipelines
Implementing dbt tests
Implementing and maintaining external dependencies
Coverage checked against the published exam guide on Aug 5, 2026.
These are independent practice questions, written against this certification's published exam guide. They are not the certification vendor's own questions, and not the real exam.