在 BigQuery Clould Shell 中从 Google Sheet 创建外部表时,如何 select 除默认值(第一个 sheet)之外的 sheet?
How to select a sheet other than the default (first sheet) when creating external tables from Google Sheet in BigQuery Clould Shell?
我从 BigQuery Cloud Shell 中的 Google Sheet link 创建了一个 table 定义文件,然后使用了那个 table 定义文件以创建外部 table。 Google Sheet 工作簿有多个 sheet,但默认情况下它根据第一个 sheet 创建外部 table。我也想从其他 sheets 制作 tables,但是添加定义 sheet 对 table 定义文件的引用的参数不起作用 - 我没找到原因。
我创建了定义文件:
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"
]
}
我通过添加 sheet 参考更改了定义文件:
{
"autodetect": true,
"sourceFormat": "GOOGLE_SHEETS",
"sourceUris": [
"https://docs.google.com/spreadsheets/d/1H9fgHbn_ztDgZZyEy4TXV7DOsBto6xI2Aey1iDeg4YA/edit#gid=2054000496"
],
"range" : "Sheet2!A1:Z100"
}
并创建了外部 table:
bq mk \
--external_table_definition=table_def \
myproject-bq:my_dataset.test_table
但是,table 是根据默认的 Sheet1 创建的,而不是指定的 Sheet2。
我试过了with/without单元格范围定义,with/without引号为Sheet定义。
当从 Google [=43= 创建外部 table 时,我怎么能 select 除了默认值(第一个 sheet)之外的 sheet ] 在 BigQuery 云中 Shell?
定义的范围应该是"googleSheetsOptions"格式的JSON。请参阅下文供您参考。
{ "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 Sheet link 创建了一个 table 定义文件,然后使用了那个 table 定义文件以创建外部 table。 Google Sheet 工作簿有多个 sheet,但默认情况下它根据第一个 sheet 创建外部 table。我也想从其他 sheets 制作 tables,但是添加定义 sheet 对 table 定义文件的引用的参数不起作用 - 我没找到原因。
我创建了定义文件:
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"
]
}
我通过添加 sheet 参考更改了定义文件:
{
"autodetect": true,
"sourceFormat": "GOOGLE_SHEETS",
"sourceUris": [
"https://docs.google.com/spreadsheets/d/1H9fgHbn_ztDgZZyEy4TXV7DOsBto6xI2Aey1iDeg4YA/edit#gid=2054000496"
],
"range" : "Sheet2!A1:Z100"
}
并创建了外部 table:
bq mk \
--external_table_definition=table_def \
myproject-bq:my_dataset.test_table
但是,table 是根据默认的 Sheet1 创建的,而不是指定的 Sheet2。
我试过了with/without单元格范围定义,with/without引号为Sheet定义。
当从 Google [=43= 创建外部 table 时,我怎么能 select 除了默认值(第一个 sheet)之外的 sheet ] 在 BigQuery 云中 Shell?
定义的范围应该是"googleSheetsOptions"格式的JSON。请参阅下文供您参考。
{ "autodetect": false, "sourceFormat": "GOOGLE_SHEETS", "sourceUris": [ "docs.google.com/spreadsheets/d/xxxxxxxxxxxxxx" ], "maxBadRecords": 1, "googleSheetsOptions": { "range": "test_sheet!A1:B20", "skipLeadingRows": 0 } }