Skip to main content

target_schema

dbt_project.yml
snapshots:
<resource-path>:
+target_schema: string

snapshots/<filename>.sql
{{ config(
target_schema="string"
) }}

Description​

The schema that dbt should build a snapshot table into. Snapshots build into the same target_schema, no matter who is running them.

On BigQuery, this is analogous to a dataset.

Default​

This is a required parameter, no default is provided.

FAQs​

Β 

Examples​

Build all snapshots in a schema named snapshots​

dbt_project.yml
snapshots:
+target_schema: snapshots

Use a target-aware schema​

Use the {{ target }} variable to change which schema a snapshot table is built in.

Note: consider whether this use-case is right for you, as downstream refs will select from the dev version of a snapshot, which can make it hard to validate models that depend on snapshots (see above FAQ)

dbt_project.yml
snapshots:
+target_schema: "{% if target.name == 'prod' %}snapshots{% else %}{{ target.schema }}{% endif %}"

Use the same schema-naming behavior as models​

Leverage the generate_schema_name macro to build snapshots in schemas that follow the same naming behavior as your models.

Notes:

  • This macro is not available when configuring from the dbt_project.yml file, so must be configured in a snapshot config block.
  • Consider whether this use-case is right for you, as downstream refs will select from the dev version of a snapshot, which can make it hard to validate models that depend on snapshots (see above FAQ)
snapshots/orders_snaphot.sql
{{
config(
target_schema=generate_schema_name('snapshots')
)
}}