如何使用 AppScript 在 BigQuery 中将 Google 工作表持久化为表格
Posted
技术标签:
【中文标题】如何使用 AppScript 在 BigQuery 中将 Google 工作表持久化为表格【英文标题】:How to use AppScript to persist a google sheet as a table in BigQuery 【发布时间】:2021-10-13 11:48:14 【问题描述】:我想使用 App 脚本将 BigQuery 中的 Google 表格内容保存为表格。
到目前为止,我们在 BigQuery 中创建了一个与 Google 表格同步的表“A”。然后我们创建一个 App 脚本,它查询表 A 并将其保存为表 B。该脚本与 Jun Kaneko's article Integrate Google Spreadsheet with Big Query by Apps Script 中描述的脚本非常相似。
这个解决方案效果很好,但是每次我们在google Sheet中更改表结构时,我们都必须创建一个新表A。因此,我想知道我们如何在 BigQuery 中没有表 A 的情况下将 Google 工作表的内容直接保存为表 B。查询应使用第一行作为列名,并将所有后续行作为内容。
【问题讨论】:
什么是A表?什么是B表?你的实际代码是什么?哪个部分不工作?我们如何重现您的问题(请提供minimal reproducible example)?请尽量方便我们为您提供帮助。 据我从您发布的文章中了解到,情况正好相反。 BigQuery 中的数据正在更新电子表格。您是否尝试过重现该场景?你在哪里停下来,你面临哪些问题?另外,请使用表格输出示例更新您的问题,并指出您要用于创建表格等的触发器。兄弟 感谢您的提问。为了更准确,让我们这样说:我们有一个带有 A - G 列的 google 表格,我们想要一个脚本,使用第一行作为字段名和下面的行作为内容/数据。那将如何运作?上面链接的教程在大查询中查询查询并将结果保存为 BigQuery 中的表。我们不想查询查询,而是保存 google sheet 的内容。感谢您的帮助! 【参考方案1】:===== 编辑
考虑到来自 OP 的新信息,如果不创建新表或在每次更改时删除并重新创建,则无法执行。 BigQuery 上的表架构不是那么灵活,例如,您不能在不重新创建表的情况下添加新列。查看有关changing schemas的更多详细信息。
=====
有一种简单的方法可以执行您想要的操作,而无需编写 App Script。
只需使用 Google 电子表格作为信息源创建一个 BigQuery 表。这是执行此操作的本机方式。
这是执行此操作的过程:
创建您的 google 电子表格,定义列(您可以插入任何数据):
返回 BigQuery,创建您的数据集:
在数据集中,创建将源数据定义为Drive
→ Google Sheet
的表。由于sheet
的第一行是表头,所以在Advanced Options
→Header rows to skip = 1
中配置:
URI:
在 Bq 上:
最后,您将获得 BigQuery 上的数据,每次更改电子表格时都会更新:如果您有任何疑问或问题,请告知。
【讨论】:
感谢@ewertonsvila,所描述的方式实际上就是我们今天的方式。此外,如果您在查询中使用非持久化表(应从 Tableau 请求),则我们有一个应用脚本可将表从 Google 工作表中持久化,因为存在访问问题。缺点是,每次更改 Google 表格中表格的格式时,都必须创建新表格。这就是为什么我想知道我们是否可以将 Google 表格直接保存到 BigQuery 表中。 抱歉,您提供的详细信息并未解释这些详细信息。很遗憾,您不能这样做。 BigQuery 上的表架构不是那么灵活,例如,您不能在不重新创建表的情况下添加新列。查看有关changing schemas的更多详细信息。以上是关于如何使用 AppScript 在 BigQuery 中将 Google 工作表持久化为表格的主要内容,如果未能解决你的问题,请参考以下文章
应用脚本:如何在 Google Sheet 中返回 BigQuery-Request 的 TotalRows
如何从 Google App Script 中的文件运行保存的 Big Query 脚本? [关闭]