0

如何引用从view1view2using的相对路径ref('package_name', 'model_name')

/root_folder
   / project1
     /models
       view1.sql
     dbt_project.yml

   / project2
     /models
       view2.sql
     dbt_project.yml

文档中没有代码示例。

谢谢你。

4

2 回答 2

4

project2了解模型的唯一方法project1是将其作为包project2包含在其文件中。然后你可以参考as in 。project1packages.ymlview1ref('project1', 'view1')project2

您必须在此处检查语法,但您可以像这样包含project1在内:project2packages.yml

project2\packages.yml

packages:
    - local: ../project1

不用说,您只需不拆分项目就可以省去很多麻烦。在大多数情况下,您不需要这样做,简单的文件夹化可以完成您可能需要的大部分工作。

于 2020-11-05T13:33:31.603 回答
0

要尝试更多地关注您的评论来回答问题:

我在 bigquery 上拥有的每个数据集都有一个文件夹。我可以在一个文件夹中为多个数据集编写模型吗?

是的你可以!

如果您不使用 bigquery,请快速注意 dbt 文档“BigQuery 配置”中的术语。

  • 架构可与 BigQuery 概念数据集互换
  • database 可与项目的 BigQuery 概念互换

这对我来说是这样的:

project-dir
     | analysis
     | data
     | macros
     | models
         |> sources
              - dataset1.yml
              - dataset2.yml
     | seed
     | dbt_project.yml
     | packages.yml

dataset.yml 的内容在哪里:

version: 2

sources:
  - name: fivetran_log
    database: my-bigquery-project-id
    loader: fivetran
    
    tables:
      - name: account
      - name: log
      - name: user

dbt_project.yml 中不需要引用即可立即使用这些源。相反,您可以直接从以下模型中引用它:

select * 
from {{ source('fivetran_log', 'user') }}

这应该允许您拥有多个数据集源,但您的所有视图只有一个 dbt 项目目录。

但是,如果您引用的数据集在不同的 bigquery 区域或不同的计费项目中,我相信您会遇到一些错误。


dbt-verse 相关问题/资源的附录:

于 2021-02-22T14:54:53.907 回答