正如问题所说,我正在运行dbt snapshot
命令并且我的一些快照不起作用,因为 DBT 没有识别id
我创建的代理键。我的快照都是以相同的方式构建的,它们所基于的基本视图也是如此。以下是由于无法识别代理键而无法正常工作的快照示例:
{% snapshot example_snapshot %}
{{ config(
target_schema = 'snapshots',
unique_key = 'id',
strategy = 'check',
check_cols = 'all'
) }}
SELECT
*
FROM
{{ ref('base_example') }}
{% endsnapshot %}
接下来是它引用的基本视图的示例:
WITH src AS (
SELECT
*
FROM
{{ source(
'tomato',
'potato'
) }}
),
cleaned AS (
SELECT
*,
{{ dbt_utils.surrogate_key(['column', 'another_column', 'yet_another_column']) }} AS id
FROM
src
)
SELECT
*
FROM
cleaned
请记住,当我运行该命令时dbt run -m [base_example]
,它会生成一个视图,在该视图中我可以看到生成为代理键的哈希值。问题仅在我运行时出现dbt snapshot
。事实上,dbt snapshot --select [example_snapshot]
一次只运行一个快照不会给我任何快照的任何错误。最令人困惑的部分:我有一个基本视图和该基本视图的快照,其配置与其他 3 个不工作的视图完全相同,但它在创建快照时识别代理键。我很困惑,任何帮助将不胜感激。