DBT Core快照子目录配置失效报错:提示缺少必填参数
问题原因与解决方案
问题出在dbt项目配置的层级结构上,你遗漏了项目名称作为snapshots配置的中间层级。
为什么会报错?
dbt的节点配置(包括快照)需要遵循 <资源类型>: <项目名称>: <子目录>: <配置> 的层级结构。你直接在snapshots下写salesforce,dbt无法将这些公共配置关联到子目录下的快照文件,导致每个快照缺少unique_key和target_schema这两个必填参数,从而触发解析错误。
正确配置步骤
- 打开
dbt_project.yml,找到顶部的name字段(比如name: my_dbt_project),这个值就是你的项目名称。 - 修改snapshots部分的配置,将
salesforce嵌套在项目名称下:
snapshots: my_dbt_project: # 替换为你的dbt项目name值 salesforce: +unique_key: id +target_schema: snapshots +invalidate_hard_deletes: True
- 保持各快照SQL文件中的
config配置不变:
{{ config( strategy='timestamp', updated_at='SYSTEM_MODSTAMP', ) }}
这样修改后,dbt就能正确识别子目录下的快照并应用公共配置,加上每个快照自身的strategy配置,就满足了所有必填参数要求,运行dbt snapshot即可正常执行。
内容的提问来源于stack exchange,提问作者averma
相关产品推荐
相关产品推荐

