dbt pre hook 删除尚未构建的表

dbt pre hook deleting a table that was not built yet

提问人:PURWU 提问时间:11/15/2023 更新时间:11/18/2023 访问量:47

问:

这是我的dbt配置

{{
  config(
    materialized='incremental',
    incremental_strategy='append',
    pre_hook='DELETE FROM {{ this }} WHERE r_date <> CURRENT_DATE
  )
}}

此模型将在 DBT 上运行。

我在 dbt run 命令上收到一个错误,它来自 pre_hook,作为标准 SQL 错误,表明我的 prehook 找不到要从中删除数据的模型。{{ this }}

在dbt运行此模型之前,是否需要一次性DDL来创建此模型的框架?

SQL snowflake-cloud-data-platform jinja2 dbt

评论

0赞 Adam Kipnis 11/15/2023
我发布了一个答案,可以满足您的要求。但只是一个旁注——这似乎应该只是一个具体化。table

答:

2赞 Adam Kipnis 11/15/2023 #1

可以选择运行预挂钩,具体取决于您是执行完全刷新还是增量作业运行。

{{
  config(
    materialized='incremental',
    incremental_strategy='append',
    pre_hook='{% if is_incremental() %} DELETE FROM {{ this }} WHERE r_date <> CURRENT_DATE {% endif %}'
  )
}}