在 Unique_Key 中使用多个列在 DBT 中进行增量加载
Using multiple columns in a Unique_Key for incremental loading in DBT
对于增量模型,DBT 文档 here 说:
The unique_key should be supplied in your model definition as a string representing a simple column or a list of single quoted column names that can be used together, for example, ['col1', 'col2', …])
我用这个增量定义在 DBT 中构建了一个增量模型
{{
config(
materialized='incremental',
unique_key = ['Col1', 'Col2', 'Col3']
)
}}
在 Snowflake 中编译成这个合并语句:
using DW_DEV.dbt_dgarrison_DATA_STAGING.MY_TABLE__dbt_tmp as DBT_INTERNAL_SOURCE
on
DBT_INTERNAL_SOURCE.['Col1', 'Col2', 'Col3'] = DBT_INTERNAL_DEST.['Col1', 'Col2', 'Col3']
...
这合理地引发了一个 SQL 抱怨括号的错误:
SQL compilation error: syntax error line 4 at position 32 unexpected '['. syntax error line 4 at position 45 unexpected ','. syntax error line 4 at position 98 unexpected '['. syntax error line 4 at position 111 unexpected ','.
我找不到任何其他以这种方式使用多列的好例子。 (有涉及连接列的选项,我愿意接受有关最佳方法的建议,但我正在尝试弄清楚如何使用 DBT 推荐的语法)
作为 dbt-core 1.1.0, we can now pass a list to the unique_key statement in incremental models. See the original issue here 的一部分。
这意味着您应该能够通过在本地更新 dbt-core
和您的 dbt-<adapter>
版本来实现您的目标;或相应地将您的 dbt Cloud 版本更新为 1.1.0,因为给定您收到的错误,看起来 unique_key
仍在寻找单个字符串而不是数组。
对于增量模型,DBT 文档 here 说:
The unique_key should be supplied in your model definition as a string representing a simple column or a list of single quoted column names that can be used together, for example, ['col1', 'col2', …])
我用这个增量定义在 DBT 中构建了一个增量模型
{{
config(
materialized='incremental',
unique_key = ['Col1', 'Col2', 'Col3']
)
}}
在 Snowflake 中编译成这个合并语句:
using DW_DEV.dbt_dgarrison_DATA_STAGING.MY_TABLE__dbt_tmp as DBT_INTERNAL_SOURCE
on
DBT_INTERNAL_SOURCE.['Col1', 'Col2', 'Col3'] = DBT_INTERNAL_DEST.['Col1', 'Col2', 'Col3']
...
这合理地引发了一个 SQL 抱怨括号的错误:
SQL compilation error: syntax error line 4 at position 32 unexpected '['. syntax error line 4 at position 45 unexpected ','. syntax error line 4 at position 98 unexpected '['. syntax error line 4 at position 111 unexpected ','.
我找不到任何其他以这种方式使用多列的好例子。 (有涉及连接列的选项,我愿意接受有关最佳方法的建议,但我正在尝试弄清楚如何使用 DBT 推荐的语法)
作为 dbt-core 1.1.0, we can now pass a list to the unique_key statement in incremental models. See the original issue here 的一部分。
这意味着您应该能够通过在本地更新 dbt-core
和您的 dbt-<adapter>
版本来实现您的目标;或相应地将您的 dbt Cloud 版本更新为 1.1.0,因为给定您收到的错误,看起来 unique_key
仍在寻找单个字符串而不是数组。