DBT可以直接连接到Google表单吗



我们目前有一个DBT实例,位于我们的Google BigQuery数据仓库之上。现在,我们最近被要求将谷歌表单中的一些数据纳入我们的建模中。

有了这些,DBT有可能直接与Google Sheets连接吗?即在.yml文件中将Google Sheets配置为直接的外部数据源,或者让DBT可能运行某种BigQuery联合SQL语句?

有一个名为DBT外部表的DBT包(https://hub.getdbt.com/dbt-labs/dbt_external_tables/latest/),但这似乎只适用于谷歌云存储桶中的BigQuery+文件。

但我在论坛和文档中看到的最常见、最直接的选择是在Google Sheet上的BigQuery上创建一个外部表。然后让DBT连接到外部BigQuery表。

我只是想检查一下,上面集成DBT x Google Sheets x BigQuery的常见选项是否是唯一的选项,或者是否真的有办法让DBT在点击BigQuery之前直接连接到Google Sheets?

感谢

根据我在dbt-external-tables侧看到的内容,bigquery适配器折叠为create_external_table宏的DDL语句。

不幸的是,我只是没有看到类似的DDL语句可用于GoogleSheets"外部";释义如果非要我猜测的话,UI可能会通过bqcli客户端执行一些东西,以便从门户网站创建。

如果本指南中添加了一节,其中包括基于GoogleDrive的外部源的DDL定义,那么这可能会成为前面提到的用于外部表的dbt宏中相对容易的构建。在此之前,您必须通过UI、bq客户端或RESTapi来定义它。

如果使用BigQuery,则可以使用dbt_external_tables将Google Sheet设置为源(根据Databricks用户的反馈编辑2023-08-10(。上周才发现。下面是一个指定了模式的示例。如果你去掉列,它应该能够自动检测,但在我做的工作表上它对我不起作用。

2023-04-21使用更好的配置示例和命令进行更新。

这是一个配置,显示了配置的模式和自动检测,这两个都对我有效

version: 2
sources:
- name: google_sheets
description: >
This source contains data stored in Google Sheets that are manually maintained.
project: my-project
dataset: stage_google_sheet
loader: external_table
tags:
- source
- google_sheet
tables:
- name: marketing_taxonomy
description: >
Marketing source channels, categories, etc.
external:
options:
format: GOOGLE_SHEETS
uris: ['https://docs.google.com/spreadsheets/d/[SHEET-ID]']
sheet_range: data
skip_leading_rows: 1
columns:
- name: source_raw
data_type: STRING
- name: source
data_type: STRING
- name: channel
data_type: STRING
- name: source_type
data_type: STRING
- name: source_category
data_type: STRING
- name: new_channel
data_type: STRING
- name: kpi_metrics_targets
description: >
KPI's maintained by FP&A
external:
options:
format: GOOGLE_SHEETS
uris: ['https://docs.google.com/spreadsheets/d/[SHEET-ID]']
sheet_range: 'Monthly Targets'
skip_leading_rows: 1

对于dbt_external_tables的新手,在引用源之前,必须运行以下命令:

dbt run-operation stage_external_sources --args "select: google_sheets"

使用源名称更新。在我的情况下,我还必须添加--vars "ext_full_refresh: true"选项。这可能并非在所有情况下都是必要的。

编辑:这在BigQuery中有效,因为BigQuery支持Google Sheets的create external table语句。请参阅:https://cloud.google.com/bigquery/docs/reference/standard-sql/data-definition-language#create_external_table_statement

最新更新