嗨,我目前正在开发一个 dbt 解决方案,该解决方案使用必须合并到目标表的 2 个源,我正在使用
{{
config(
unique_key = ['col1', 'col2', 'col3'],
merge_exclude_columns = ['col1', 'col2', 'col3']
)
}}
问题是我需要使用其他两个表来仅更新某些行(与这 3 列(col1、col2 和 col3)匹配)。我不需要使用在连接时插入和更新行的标准合并,而只在匹配时更新行,
我怎样才能做到这一点?
谢谢
如果我理解正确,您需要
LEFT JOIN
操作,而不是 incremental
dbt 模型。 merge_exclude_columns
用于 materialized='incremental'
模型,而不是视图或表格。
我猜你需要一个像这样的 dbt 模型:
{{
config(
materialized='table'
)
}}
SELECT
a.*,
b.*
FROM {{ source('source', 'table_1') }} a
LEFT JOIN {{ source('source', 'table_2') }} b
ON
b.col1 = a.col1
b.col2 = a.col2
b.col3 = a.col3
dbt 将在每次运行时从头开始重新创建此表。
如果我误解了您的问题,请告诉我。