Sha*_*yHa 6 snowflake-cloud-data-platform dbt
对于我试图解决的新 DBT 用例,我需要一些智慧。我对 DBT 很陌生,不确定什么是最有效的 DBT 方法。我们使用雪花作为 DWH。
我们有很多使用 DBT 管理的增量模型。最近,我们需要向所有模型添加一个新列。最有效的 DBT 方法是什么?我们应该覆盖增量宏脚本吗?(我为雪花找到了这个。)我认为最后的手段是将新列手动添加到每个模型。
你可以--full-refresh所有增量模型或在 dbt 之外执行此架构迁移。
--full-refresh如果可以的话我建议使用。由于--full-refresh重建表,它会处理架构更改和新列的历史值。
在当前版本的 dbt 上v0.21.0,引入了一个新的增量设置,on_schema_change. 您可以将其设置为append_new_columns
引用文档中的一些相关部分:
dbt 版本 v0.21.0 中的新 on_schema_change 配置 现在可以将增量模型配置为包含可选的 on_schema_change 参数,以便在增量模型列更改时启用额外控制。这些选项使 dbt 能够在架构发生更改的情况下继续运行增量模型,从而减少 --full-refresh 场景并节省查询成本。
append_new_columns:将新列追加到现有表中。请注意,此设置不会从现有表中删除新数据中不存在的列。
注意: on_schema_change 行为都不会为新添加的列回填旧记录中的值。如果您需要填充这些值,我们建议运行手动更新,或触发 --full-refresh。
如果--full-refresh不是一个选项或者您使用的是较旧的 dbt 版本,那么您的架构迁移将必须手动完成。
步骤是:
alter table my_incremental_table add column new_column_name data_typemy_incremental_table添加new_column_name到选择查询的列列表的末尾这会起作用,因为 dbt 是无状态的,但由于这是手动操作,如果可以避免的话,我不建议这样做。
另请注意,如果您使用该on_schema_change方法,您仍然需要手动回填新列。
| 归档时间: |
|
| 查看次数: |
6626 次 |
| 最近记录: |