【问题标题】:Is there a way to force a full refresh for a dbt incremental model if its model changed?如果 dbt 增量模型的模型发生变化,是否有办法强制对其进行完全刷新?
【发布时间】:2022-11-24 01:54:19
【问题描述】:
我将使用增量模型在 Snowflake 中为管道实施 dbt 以节省查询成本,但我想管理非常频繁的架构更改。对于运行 dbt run 的每个环境,我将有一个每日 ETL 作业。
此外,在 qa 和 prod 环境中,我将无法运行任何 cmd,因为我无权访问这些环境以解决安全问题,只能访问 dev。
如果模式更改,是否可以触发模型的完全刷新?
我看到我们可以将 on_schema_change 选项与增量模型一起使用,但这只会添加(或删除)列而不填充它们,这不是我正在寻找的,因为我将无法手动运行强制刷新在质量保证和生产中。
非常感谢
【问题讨论】:
标签:
snowflake-cloud-data-platform
dbt
【解决方案1】:
对的,这是可能的。 How do I rebuild an incremental model?:
如果您的增量模型逻辑已更改,则新数据行的转换可能与存储在目标表中的历史转换不同。在这种情况下,您应该重建增量模型。
要强制 dbt 从头开始重建整个增量模型,请在命令行上使用 --full-refresh 标志。此标志将导致 dbt 在一直重建它之前删除数据库中现有的目标表。
$ dbt run --full-refresh --select my_incremental_model+
还建议重建任何下游模型,如尾随 + 所示。