在不同的仓库中运行增量而不是完全刷新

问题描述 投票:0回答:2

我想构建一个增量模型,它利用两种不同的仓库规格,具体取决于运行的增量版本还是完全刷新版本。

我认为类似以下的事情可能是可能的,但尚未能够使其发挥作用:

{% if is_incremental() %}
    {{ config(snowflake_warehouse=var("m_warehouse")) }}
{% else %}
    {{ config(snowflake_warehouse=var("xl_warehouse")) }} 
{% endif %}

{{
    config(
        materialized="incremental", 
        unique_key="pk_number", 
        on_schema_change="fail"
    )
}}

-- my model logic
select 1;

这个问题的答案应该是模型文件顶部的配置块

snowflake-cloud-data-platform jinja2 dbt
2个回答
2
投票

在您的情况下,您可以将 Jinja 内联到配置块中:

{{
  config({
    "materialized": "incremental", 
    "unique_key": "pk_number", 
    "on_schema_change": "fail",
    "snowflake_warehouse": var('m_warehouse') if is_incremental() else var('xl_warehouse')
  })
}}

注意 - 更复杂的 Jinja 逻辑在这里不起作用。有一个 PR 允许覆盖默认宏,但尚未发布:https://github.com/dbt-labs/dbt-snowflake/pull/503


0
投票

我能够通过更改配置的顺序来使其工作,首先进行物化,然后稍后切换仓库:

{{ config(materialized='incremental', unique_key='session_id') }}

{% if not is_incremental() %}
    {{ config(snowflake_warehouse= 'SMALL_WH') }}
{% endif %}
© www.soinside.com 2019 - 2024. All rights reserved.