问题描述
如何使用view1
指代从view2
到ref('package_name','model_name')
的相对路径?
/root_folder
/ project1
/models
view1.sql
dbt_project.yml
/ project2
/models
view2.sql
dbt_project.yml
the documentation中没有代码示例。
谢谢。
解决方法
project2
了解project1
中的模型的唯一方法是,project2
是否在其project1
文件中包含packages.yml
作为包。然后您可以在view1
中将ref('project1','view1')
称为project2
。
您必须在此处检查语法,但是您可以像这样:在project1
的{{1}}中包含project2
,
在packages.yml
中:
project2\packages.yml
不用说,您只需不拆分项目就可以避免很多麻烦。在大多数情况下,您不需要这样做,简单的文件夹化即可完成您可能需要的大部分工作。
,尝试通过更多关注您的评论来回答问题:
对于 bigquery 上的每个数据集,我都有一个文件夹。我可以在一个文件夹中为多个数据集编写模型吗?
是的,你可以!
如果您不使用 bigquery,请快速记下 dbt 文档 "BigQuery configurations" 中的术语。
- 架构可与 BigQuery 概念数据集互换
- 数据库可与项目的 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 中相关问题/资源的附录: