DBT 从不同的 Google 项目中选择 Big Query 表

问题描述

我正在使用 DBT 在 Big Query 中读取和写入表,所有这些都在我的 Google 项目 X 中运行。
我有一张表,我想从不同的 Google 项目 Y 中读取并放入 DBT 模型(然后将其保存为项目 X 中的表)。
能做到吗?如果是,我在哪里定义 FROM {{ source('dataset_project_y','table_to_read')}} 中的不同项目?

解决方法

首先,您需要在 source.yml 文件中声明源。

https://docs.getdbt.com/docs/building-a-dbt-project/using-sources#declaring-a-source

例如,创建一个 source_y.yml

sources:
  - name: dataset_project_y
    schema: dataset_y
    database: 'project_y'
    tables:

      - name: table_to_read
        identifier: table_to_read

在那之后, 您可以在任何 dbt 模型中引用源 table_to_read,在任何 dbt 模型的 SQL 语句中从中选择。

https://docs.getdbt.com/docs/building-a-dbt-project/using-sources#selecting-from-a-source

例如,在 dbt_model_x.sql 中使用 table_to_read

{{
  config(
    materialized = "view",)
}}

SELECT * FROM {{ source('dataset_project_y','table_to_read')}}