【发布时间】:2021-11-26 21:12:53
【问题描述】:
我正在尝试将 DBT 模型配置为 materialized='incremental',但它失败了,因为 DBT 似乎通过检查 (None) or (None) is null 来包装我的模型,这导致模型针对目标 (Bigquery) 引发 SQL 异常. (None) 检查似乎没有为非增量模型添加,或者在使用 --full-refresh 运行时,它只是重新创建表。
根据the docs,增量模型应该如下包装:
merge into {{ destination_table }} DEST
using ({{ model_sql }}) SRC
...
但是我看到的是:
merge into {{ destination_table }} DEST
using ( select * from( {{ model_sql }} ) where (None) or (None) is null) SRC
...
我不清楚 (None) 检查的来源、包装查询实际上试图实现什么以及需要设置什么(如果有)模型配置来纠正这个问题。
我的模型配置设置为{{ config(materialized='incremental', alias='some_name') }},我也尝试设置unique_key,以防万一没有运气。
我正在使用dbt run --profiles-dir dbt_profiles --models ${MODEL} --target development 运行模型,并且可以确认已编译的模型正常,并且为模型运行添加了(None) 检查。
我正在运行 dbt 0.11.1(旧的 repo 版本)。
任何帮助将不胜感激!
【问题讨论】:
-
不幸的是,您引用的文档适用于当前版本的 dbt (0.21.0),因此您落后了 10 个版本!从那以后发生了很多变化,尤其是对于 BQ。你的配置中有
partition_by,你的模型中有{% if is_incremental() %}吗?尽可能多地发布特定于 dbt 的代码(编辑任何敏感代码)可能会更有帮助。 -
您的评论鼓励我四处寻找
0.11来源,并在下面找到答案。谢谢!
标签: sql google-bigquery dbt