在增量模型上 运行 时 (None) 的 DBT 过滤
DBT filtering for (None) when running on incremental model
我正在尝试将 DBT 模型配置为 materialized='incremental'
,但它失败了,因为 DBT 似乎通过检查 (None) or (None) is null
来包装我的模型,这导致模型抛出 SQL 针对目标 (Bigquery) 的异常。 (None)
检查似乎没有为非增量模型添加,或者当 运行 --full-refresh
只是重新创建 table.
根据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)
检查。
我是 运行ning dbt 0.11.1
(旧回购版本)。
如有任何帮助,我们将不胜感激!
您是否事先使用 0.11.1
配置了增量模型?我很确定您需要使用 {{ this }}
,但可能在版本 0.11.1
中不存在。 docs on this
通过查看 github 上我的目标版本的 DBT 代码库设法解决了这个问题 - incremental macro 0.11
似乎在 0.11 DBT 中需要设置一个 sql_where
配置标志,用于 select 您要用于增量加载的记录([=11 的前游标) =]宏)。
在我的例子中,因为我只想加载每个增量 运行 中的所有行并使用加载时间戳标记,设置 sql_where='TRUE'
生成有效 sequel 并且不过滤我的结果(即 WHERE TRUE OR TRUE IS NULL
)
我正在尝试将 DBT 模型配置为 materialized='incremental'
,但它失败了,因为 DBT 似乎通过检查 (None) or (None) is null
来包装我的模型,这导致模型抛出 SQL 针对目标 (Bigquery) 的异常。 (None)
检查似乎没有为非增量模型添加,或者当 运行 --full-refresh
只是重新创建 table.
根据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)
检查。
我是 运行ning dbt 0.11.1
(旧回购版本)。
如有任何帮助,我们将不胜感激!
您是否事先使用 0.11.1
配置了增量模型?我很确定您需要使用 {{ this }}
,但可能在版本 0.11.1
中不存在。 docs on this
通过查看 github 上我的目标版本的 DBT 代码库设法解决了这个问题 - incremental macro 0.11
似乎在 0.11 DBT 中需要设置一个 sql_where
配置标志,用于 select 您要用于增量加载的记录([=11 的前游标) =]宏)。
在我的例子中,因为我只想加载每个增量 运行 中的所有行并使用加载时间戳标记,设置 sql_where='TRUE'
生成有效 sequel 并且不过滤我的结果(即 WHERE TRUE OR TRUE IS NULL
)