【问题标题】:skip dbt model if source table not exist如果源表不存在则跳过 dbt 模型
【发布时间】:2022-07-16 05:11:21
【问题描述】:

如果找不到源表,我试图强制 dbt 跳过模型,但我没有找到任何可以帮助解决此类主题的资源,有关上下文的更多详细信息,我有一个名为 sales 的文件夹假设我们有两个模型 orderscustomers,每个模型中的 sql 代码都是这样的:

select * from my_project.my_dataset.table

现在要提到的是,table 只是 BigQuery 中的一个临时表,它会不断过期并用新数据更新,因此有时它存在于数据集中,但有时不存在。话虽如此,dbt 在尝试运行模型时会抛出错误,因为他没有在源中找到表,这很好,我只是希望 dbt 跳过它,不要抛出 Table not Found 的错误

有什么方法可以解决这个问题吗?

【问题讨论】:

  • 我想我对 BQ 临时表的了解不够,但如果它当前“过期”,是否在任何地方的 information_schema 中都有指示?行不存在时是否从 information_schema 中删除?
  • 看起来这里可能有一个带有TABLE_OPTIONS_VIEW 的选项,专门用于expiration_timestamp 值。

标签: google-bigquery jinja2 dbt


【解决方案1】:

您有记录数据库写入/删除操作的表吗?还是跟踪数据库中存在的当前表的表? [让我们称之为审计表]

如果您这样做,那么您可以通过读取该查询并评估该表中的单个值来启动一个 dbt 查询。如果该值不为 null 或者您获得了预期的表数,则返回继续并评估其余的 sql。否则它是一个什么都不做的 sql 查询。

您可以使用案例逻辑来处理存储 sql 的变量,并将它们设置为在审计表中未列出所需表时评估为空字符串。

【讨论】:

    猜你喜欢
    • 2022-10-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-12-02
    • 2018-07-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多