创建要由 dbt 中的模型引用的源文件的问题

Issues creating a source file to be referenced by models in dbt

我是 DBT 的新手,我了解如何创建 src.yml 我在 snowflake(database/schema/table) 中的数据源所在的位置以供我的模型引用。但是我不确定当数据源是模型时该怎么做。下面的代码成功引用了我的源(数据模型)并运行。但是 objective 是创建一个 src.yml,包括我的源(数据模型)和其他可以引用它的模型的详细信息。

我的模型引用了它的来源:'mark', 'A_mark_Properties'

with cats(
   select "iD",
          "Val", 
          "Set",
        ROW_NUMBER()OVER ( PARTITION BY "iD" order by "Set" desc )  as num
   from {{ ref('mark', 'A_mark_Properties') }} --refernece the model
   )

objective 是创建一个 src.yml 并添加我的源数据模型的详细信息。当创建用于引用 table 的源文件时,通常是这样,但是当涉及到数据模型作为源时,我不确定如何创建类似的东西。

version: 2

sources:
  - name: jaffle_shop
    tables:
      - name: orders
      - name: customers

  - name: stripe
    tables:
      - name: payments

您不需要添加 a_mark_properties 作为来源。如果它是同一 dbt 项目中的模型,那么您需要做的就是从新模型中编写 {{ ref('a_mark_properties') }}

按照您编写 ref() 的方式,您似乎正试图从添加到当前项目的包中提取模型(参见 advanced ref usage)。

但是,我的猜测是您认为必须将 mark.a_mark_properties 添加到 src.yml 文件,而实际上您不需要。我很惊讶你的模型 运行 除非你确实添加了一个名为 mark 的包(另一个 dbt 项目)并且其中有一个名为 a_mark_properties 的模型。

如果您确实有一个与现有 dbt 模型无关的 table,那么您已将其添加到您的 src.yml 文件中(注意:没有将数据库添加到源中,默认是你的目标数据库,根据 dbt 教程应该是 analytics)...

--src.yml
version: 2

sources:
  - name: mark
    tables:
      - name: a_mark_properties

你会这样引用它...

select *
from {{ source('mark','a_mark_properties') }}

很难回答你的问题,因为我不确定你如何正确地运行完成你目前的工作。