gpt4 book ai didi

dbt - 为什么 DBT 运行的模型没有在 DBT 运行语句中明确定位?

转载 作者:行者123 更新时间:2023-12-02 18:12:41 26 4
gpt4 key购买 nike

我有一个 DBT 项目,主要由雪花外部 TableView 的模型组成。每个模型 View 均由单独的 dbt run 语句同时触发。

dbt run --models model_for_view_1

我在 dbt 项目中还有另一个模型,它具体化为使用这些 View 的表。我使用与上面相同的 DBT 运行语句在气流中的单独 DAG 中触发此模型。它不使用将其连接到 View 的引用或源语句。

我最近注意到,每当我构建 View 模型时,DBT 就会构建这个表模型。我认为这是因为 DBT 推断这是一个引用模型,但经过一些实验(我什至将表模型 SQL 设置为 SELECT 1+1 as column1 之类的东西),它仍然在构建。我已将它放在 dbt 项目中的不同文件夹中,重命名该文件等。没有乐趣。不知道为什么运行其他模型会导致构建这个不相关的模型。与 View 模型的唯一联系是它们在数据库中共享相同的架构。是什么触发了这个模型的构建?

最佳答案

选择语法可能很挑剔,因为选择模型的方法有很多种。来自 the docs :

The --select flag accepts one or more arguments. Each argument can be one of:

  1. a package name
  2. a model name
  3. a fully-qualified path to a directory of models
  4. a selection method (path:, tag:, config:, test_type:, test_name:)

(请注意,--models 在 v0.21 中已重命名为 --select,但 --models 具有相同的行为)

所以我的猜测是,您的 model_for_view_1 名称不是唯一的,并且与您的项目(在本例中充当包)或它所在的目录共享。

因此,如果您的项目如下所示:

models
|- some_name
|- some_name.sql # the view
|- another_name.sql # the table

dbt run --models some_name 将运行 some_name.sqlanother_name.sql 中的代码,因为它正在选择目录名为some_name

关于dbt - 为什么 DBT 运行的模型没有在 DBT 运行语句中明确定位?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/72043221/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com