在 BigQuery Cloud Shell 中从 Google 表格创建外部表格时,如何选择默认表格(第一张表格)以外的表格?

Posted

技术标签:

【中文标题】在 BigQuery Cloud Shell 中从 Google 表格创建外部表格时,如何选择默认表格(第一张表格)以外的表格?【英文标题】:How to select a sheet other than the default (first sheet) when creating external tables from Google Sheet in BigQuery Clould Shell? 【发布时间】:2020-02-20 13:17:26 【问题描述】:

我从 BigQuery Cloud Shell 中的 Google Sheet 链接创建了一个表定义文件,然后使用该表定义文件创建了一个外部表。 Google Sheet 工作簿有多个工作表,但默认情况下它基于第一个工作表创建外部表。我也想从其他表格制作表格,但是将定义表格引用的参数添加到表格定义文件不起作用 - 我没有找到原因。

我创建了定义文件:

bq mkdef \
--autodetect \
--source_format=GOOGLE_SHEETS \
https://docs.google.com/spreadsheets/d/1H9fgHbn_ztDgZZyEy4TXV7DOsBto6xI2Aey1iDeg4YA/edit#gid=2054000496 > table_def

定义文件如下所示:


  "autodetect": true,
  "sourceFormat": "GOOGLE_SHEETS",
  "sourceUris": [
"https://docs.google.com/spreadsheets/d/1H9fgHbn_ztDgZZyEy4TXV7DOsBto6xI2Aey1iDeg4YA/edit#gid=2054000496"
  ]

我通过添加工作表引用更改了定义文件:


  "autodetect": true,
  "sourceFormat": "GOOGLE_SHEETS",
  "sourceUris": [
"https://docs.google.com/spreadsheets/d/1H9fgHbn_ztDgZZyEy4TXV7DOsBto6xI2Aey1iDeg4YA/edit#gid=2054000496"
  ],
"range" : "Sheet2!A1:Z100"

并创建了外部表:

bq mk \
--external_table_definition=table_def \
myproject-bq:my_dataset.test_table

但是,表格是基于默认的 Sheet1 而不是指定的 Sheet2 创建的。

我尝试使用/不使用单元格范围定义,使用/不使用工作表定义的引号。

在 BigQuery Cloud Shell 中从 Google 表格创建外部表格时,如何选择默认表格以外的表格(第一张表格)?

【问题讨论】:

您能否尝试以下列格式提供详细信息: "autodetect": false, "sourceFormat": "GOOGLE_SHEETS", "sourceUris": [ "docs.google.com/spreadsheets/d/xxxxxxxxxxxxxx" ], "maxBadRecords": 1、“googleSheetsOptions”:“范围”:“test_sheet!A1:B20”,“skipLeadingRows”:0 谢谢,成功了! “googleSheetsOptions”是范围定义中缺少的部分。 我会将其粘贴为答案,这样其他人就不会继续在 cmets 中搜索,他们可以直接查看它。请接受。 【参考方案1】:

定义的范围应在 JSON 格式的“googleSheetsOptions”中。请参阅下文。

 "autodetect": false, "sourceFormat": "GOOGLE_SHEETS", "sourceUris": [ "docs.google.com/spreadsheets/d/xxxxxxxxxxxxxx" ], "maxBadRecords": 1, "googleSheetsOptions":  "range": "test_sheet!A1:B20", "skipLeadingRows": 0   

【讨论】:

以上是关于在 BigQuery Cloud Shell 中从 Google 表格创建外部表格时,如何选择默认表格(第一张表格)以外的表格?的主要内容,如果未能解决你的问题,请参考以下文章

使用 Cloud Shell 终端将 Firestore 数据库数据复制到 Bigquery

Google Cloud Dataproc 删除 BigQuery 表不起作用

使用 Python,将 google.cloud.bigquery.job.query.QueryJob 输出保存到本地 JSON 文件

如何在 python jupyter notebook 中运行 bigquery SQL 查询

如何使用Appengine和来自API的Python脚本流数据将数据流式传输到Google Cloud BigQuery?

如何在 PyCharm 的 pandas 数据框中从 BigQuery 读取数据