【问题标题】:dbt two argument refdbt 两个参数参考
【发布时间】:2020-11-05 11:31:45
【问题描述】:

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

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

   / project2
     /models
       view2.sql
     dbt_project.yml

the documentation中没有代码示例。

谢谢。

【问题讨论】:

    标签: dbt


    【解决方案1】:

    project2 了解project1 中模型的唯一方法是project2 是否将project1 作为一个包包含在其packages.yml 文件中。然后您可以在project2 中将view1 称为ref('project1', 'view1')

    您必须在此处检查语法,但您可以在 project2 中包含 project1packages.yml 中,如下所示:

    project2\packages.yml:

    packages:
        - local: ../project1
    

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

    【讨论】:

    • 我在 bigquery 上拥有的每个数据集都有一个文件夹。我可以在一个文件夹中为多个数据集编写模型吗?
    • 我试过了,但看起来你的技术覆盖了 project1 中的 target.schema 变量,这会导致运行时错误。
    • 我想你想看看自定义模式来解决组织模型和目标的更大问题。 docs.getdbt.com/docs/building-a-dbt-project/building-models/…
    • 这似乎并不能解决多数据集项目。
    【解决方案2】:

    尝试在回答问题时更加关注您的评论:

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

    是的,你可以!

    关于 dbt 文档 "BigQuery configurations" 中的术语的快速说明,以防您不使用 bigquery。

    • 架构可与 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 相关问题/资源的附录:

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2016-03-16
      • 2012-10-25
      • 1970-01-01
      • 2018-12-19
      • 1970-01-01
      • 2013-10-17
      • 1970-01-01
      • 2021-05-25
      相关资源
      最近更新 更多