SQL 服务器中的 dbt 增量模型
dbt incremental model in SQL Server
从这个模型,根据我对dbt文档的理解:
编辑:(删除了语句中的 DISTINCT,因为它是不必要的)
Test.sql
{{ config(
as_columnstore = false,
schema='staging',
materialized='incremental',
unique_key='id',
incremental_strategy='merge',
merge_update_columns = ['name', 'updated_at'])
}}
SELECT I.id,
I.name,
MAX(I.extraction_date) created_at,
MAX(I.extraction_date) updated_at
FROM staging.test_data_raw I
WHERE I.id IS NOT NULL
GROUP BY I.id, I.name
我预计,如果具有匹配 Id 的记录已经存在,则在 table 中然后 name 和updated_at 会改变,但 created_at 会保持原样
但是,在 运行 多次之后,created_at 总是会发生变化。所以我的猜测是 dbt 没有执行合并操作,而是 delete/insert.
我是 运行 dbt 与 SQL 服务器连接器。
难不成这个连接器没有实现合并策略?
或者我在这里做错了什么?如果是这样,有什么办法可以解决这个问题吗?
我坐在这里,想知道同样的事情(但使用 Azure DW)。 15 天没有正面回应,所以我猜答案一定是 dbt-sqlserver 适配器还没有实现增量策略“合并”。转到 https://github.com/dbt-msft/dbt-sqlserver/discussions/categories/ideas 并推荐此功能!
从这个模型,根据我对dbt文档的理解:
编辑:(删除了语句中的 DISTINCT,因为它是不必要的)
Test.sql
{{ config(
as_columnstore = false,
schema='staging',
materialized='incremental',
unique_key='id',
incremental_strategy='merge',
merge_update_columns = ['name', 'updated_at'])
}}
SELECT I.id,
I.name,
MAX(I.extraction_date) created_at,
MAX(I.extraction_date) updated_at
FROM staging.test_data_raw I
WHERE I.id IS NOT NULL
GROUP BY I.id, I.name
我预计,如果具有匹配 Id 的记录已经存在,则在 table 中然后 name 和updated_at 会改变,但 created_at 会保持原样
但是,在 运行 多次之后,created_at 总是会发生变化。所以我的猜测是 dbt 没有执行合并操作,而是 delete/insert.
我是 运行 dbt 与 SQL 服务器连接器。
难不成这个连接器没有实现合并策略? 或者我在这里做错了什么?如果是这样,有什么办法可以解决这个问题吗?
我坐在这里,想知道同样的事情(但使用 Azure DW)。 15 天没有正面回应,所以我猜答案一定是 dbt-sqlserver 适配器还没有实现增量策略“合并”。转到 https://github.com/dbt-msft/dbt-sqlserver/discussions/categories/ideas 并推荐此功能!