如何更改快照中的默认列名称: dbt_valid_from dbt_valid_to?
我覆盖了宏default__build_snapshot_table,它第一次工作,但是当我重新运行快照时,我收到以下错误:
您需要覆盖 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) %}
...
查看默认实现,了解重命名列时需要替换哪些逻辑。应该很简单。
正如 Adam 上面提到的,还有更多的宏需要重写。您应该查看 snapshot_merge_sql 和 snapshot_staging_table 以及 https://github.com/dbt-labs/dbt-core/blob/a0e13561b1e92e46559d68cbea469fb1923b8240/core/dbt/include/global_project/macros/ 中的断言语句物化/snapshots/snapshot.sql 您可能必须覆盖或删除它。