我想建立一个incremental model它利用两种不同的仓库规范,具体取决于运行的增量版本还是完全刷新版本。
我认为类似以下的事情可能是可能的,但尚未能够使其发挥作用:
{% 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;
这个问题的答案应该是config block位于模型文件的顶部。
最佳答案
就您而言,您可以将 Jinja 内联到配置 block 内:
{{
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
关于snowflake-cloud-data-platform - 在不同的仓库中运行增量刷新而不是完全刷新,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/75795084/