更改快照中的 dbt 日期名称

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

如何更改快照中的默认列名称: dbt_valid_from dbt_valid_to?

我覆盖了宏default__build_snapshot_table,它第一次工作,但是当我重新运行快照时,我收到以下错误:

postgresql macros snapshot dbt scd
2个回答
1
投票

您需要覆盖 2 个宏。第一个 (

build_snapshot_table
) 处理快照表的初始创建,您已完成此操作。第二个 (
build_snapshot_staging_table
) 处理后续运行中的增量。您可以在 dbt-core/snapshot.sql 代码中看到这一点(snapshot.sql):

  {% if not target_relation_exists %}


      {% set build_sql = build_snapshot_table(strategy, model['compiled_sql']) %}
      {% set final_sql = create_table_as(False, target_relation, build_sql) %}


  {% else %}


      {{ adapter.valid_snapshot_target(target_relation) }}


      {% set staging_table = build_snapshot_staging_table(strategy, sql, target_relation) %}
...

查看默认实现,了解重命名列时需要替换哪些逻辑。应该很简单。


0
投票

正如 Adam 上面提到的,还有更多的宏需要重写。您应该查看 snapshot_merge_sqlsnapshot_staging_table 以及 https://github.com/dbt-labs/dbt-core/blob/a0e13561b1e92e46559d68cbea469fb1923b8240/core/dbt/include/global_project/macros/ 中的断言语句物化/snapshots/snapshot.sql 您可能必须覆盖或删除它。

© www.soinside.com 2019 - 2024. All rights reserved.