如何为dbt增量模型配置不同仓库:增量运行与全刷新分离
解决增量模型分场景使用不同Snowflake仓库的问题
你这段代码的问题在于写了两个独立的config块,dbt会忽略前面带条件判断的配置,只生效最后一个config里的设置。要实现增量运行用中型仓库、全刷新用大型仓库的需求,得把条件判断整合到同一个config块里,或者提前定义变量再引用。
正确写法一:直接在config中嵌入条件判断
{{ config( materialized="incremental", unique_key="pk_number", on_schema_change="fail", snowflake_warehouse=var("m_warehouse") if is_incremental() else var("xl_warehouse") ) }} -- 你的模型逻辑 select 1;
正确写法二:先定义变量再引用(适合更复杂的逻辑)
{% set target_warehouse = var("m_warehouse") if is_incremental() else var("xl_warehouse") %} {{ config( materialized="incremental", unique_key="pk_number", on_schema_change="fail", snowflake_warehouse=target_warehouse ) }} -- 你的模型逻辑 select 1;
原理说明:dbt处理模型配置时,只会识别最后一个{{ config() }}块,所以必须把所有需要的配置(包括动态判断的仓库)都放到同一个块里,或者用变量提前计算好目标仓库再传入config。
内容的提问来源于stack exchange,提问作者sgdata
相关产品推荐
相关产品推荐

