gpt4 book ai didi

google-bigquery - 如何从 Big Query EXTERNAL_QUERY 配置 DBT 源

转载 作者:行者123 更新时间:2023-12-05 05:59:10 42 4
gpt4 key购买 nike

在 Big Query 中,我使用外部连接/联合 SQL 查询 (cloudSQL),我可以通过 SELECT * FROM EXTERNAL_QUERY("gcp-name.europe-west3.friendly_name", "SELECT * FROM database_name.external_table;")

现在我的问题是,在 DBT 中,我如何在我的 schema.yml 文件中定义这个源以及我的 FROM {{source(...,...)}} 语句应该如何定义看起来像?

最佳答案

从我的角度来看,现在给出我对 dbt-external-tables 当前状态的上述评论包(我认为这不能满足您的需求),我会说您有两个选择:

  1. 将您的外部依赖项定义为自定义架构中的静态 View ,然后导入为 dbt 源。

  2. 使用类似 Evaluate(<select *>) 的方式在 dbt 中定义您的外部依赖项然后 ref()那些在你的转换/阶段层中正常的。


#1 的例子

* my-bq-project-id
|
|_ dbt_schema
|
|_ external_db_schema
|
|_ external_table_1
|_ external_table_2

等然后你会:

* my-dbt-project-dir
|
|_ analysis
|_ data
|_ models
| |_ sources
| | |
| | |> my_external_table_1.yml
| | |> my_external_table_2.yml
| |
| |_ transforms
| |_ final
|_ dbt_project.yml
|_ readme.md

“my_external_table_1.yml”看起来像:

sources:
- name: external_db_schema
database: my-bq-project-id

tables:
- name: my_external_table_1
description: "Lorem Ipsum"

并且您的静态 View 是通过运行如下查询来定义的:

create view if not exists `my-bq-project-id.external_db_schema.my_external_table_1` as 
( SELECT * FROM EXTERNAL_QUERY("gcp-name.europe-west3.friendly_name",
"SELECT * FROM database_name.external_table;"))

#2 的例子

只需制作一个基本级别的 dbt 模型,它完全符合您在 1-1 对象映射上所描述的内容:

my_external_table_1.sql

execute immediate (
SELECT * FROM EXTERNAL_QUERY("gcp-name.europe-west3.friendly_name",
"SELECT * FROM database_name.external_table;")
)

然后从这里您将能够ref('my_external_table_1')在你的转换层等等。

关于google-bigquery - 如何从 Big Query EXTERNAL_QUERY 配置 DBT 源,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/68273481/

42 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com