dbt:模型“bar”取决于模型“foo”,该模型未找到或被禁用

Ale*_*air 1 dbt

我正在使用名为dbt的命令行工具。整个项目有点复杂,所以我将尝试描述基本布局。

这是我的缩写文件树;

dbt_project.yml
.user.yml
dbt_modules
models/baz/subdir/baz_mytable.sql
models/sources/baz/baz_myinfo.sql
profiles.yml
Run Code Online (Sandbox Code Playgroud)

以下是 的简短内容dbt_project.yml。引用两个相关 .sql 文件的目录,并选取并行文件夹结构内的依赖项。

name: 'my_proj'
version: '1.0'
source-paths: ["models"]
modules-path: "dbt_modules"
...
models:
  my_proj:
    ...
    baz:
      subdir:
        materialized: table
        schema: baz_final
    sources:
      baz:
        materialized: view
        schema: baz_cleaned
  ...
Run Code Online (Sandbox Code Playgroud)

以下是 的简短内容baz_myinfo.sql

{{ config(alias='myinfo') }}
SELECT ...
Run Code Online (Sandbox Code Playgroud)

以下是 的简短内容baz_mytable.sql

WITH sometable AS (
    SELECT ... FROM {{ ref('myinfo') }} ...
Run Code Online (Sandbox Code Playgroud)

鉴于这一切,当我运行 dbt 命令时,我收到错误“Model 'model.my_proj.baz_mytable' depends on model 'myinfo' which was not found or is disabled我的模型均未禁用”。为什么 dbt 没有获取依赖项?

Ale*_*air 9

根据dbt 文档,调用ref应使用模型的文件名,而不是该文件中模型的别名。所以内容baz_mytable.sql应该是这样的

WITH sometable AS (
    SELECT ... FROM {{ ref('baz_myinfo') }} ...
Run Code Online (Sandbox Code Playgroud)

因为该文件名为baz_myinfo.sql.