如何修改BigQuery中关联Google Sheets的外部表Schema?
BigQuery Google Sheets 外部表 Schema 修改解决方案
BigQuery 近期更新后已下线 Google Drive 类外部表的 UI 编辑 Schema 入口,你可以通过以下3种方式完成列追加:
方法1:执行 ALTER TABLE 语句追加列(推荐,仅需追加列时使用)
外部表仅支持在 Schema 末尾追加列,不可修改/删除已有列、调整列顺序,避免源数据映射错误。执行以下标准 SQL 即可:
ALTER TABLE `你的项目ID.你的数据集ID.你的外部表名` ADD COLUMN 第一列新增名称 对应数据类型 OPTIONS(description="列说明(可选)"), ADD COLUMN 第二列新增名称 对应数据类型 OPTIONS(description="列说明(可选)");
替换参数时注意列类型要和 Google Sheets 中的实际数据类型匹配,常用类型包括 STRING、INT64、FLOAT64、DATE、BOOL 等。
方法2:重建外部表覆盖原配置(适合需要调整多配置的场景)
如果需要同步修改其他外部表配置,可通过 CREATE OR REPLACE 语句重新定义全量 Schema,不会影响源 Google Sheets 数据:
CREATE OR REPLACE EXTERNAL TABLE `你的项目ID.你的数据集ID.你的外部表名` ( 原有列1名称 原有列1类型, 原有列2名称 原有列2类型, -- 按原有顺序补全所有历史列配置 第一列新增名称 对应数据类型, 第二列新增名称 对应数据类型 ) OPTIONS( format = 'GOOGLE_SHEETS', uris = ['你的Google Sheets文件链接'], skip_leading_rows = 1 -- 首行为表头填1,无表头填0 );
方法3:使用 bq 命令行工具更新 Schema
习惯用命令行操作的用户可以按以下步骤执行:
- 导出当前表 Schema 到本地 json 文件:
bq show --schema --format=prettyjson 你的项目ID:你的数据集ID.你的外部表名 > schema.json - 打开 schema.json 文件,在列配置数组末尾追加新增列的配置,示例格式:
{ "name": "新增列名称", "type": "STRING", "mode": "NULLABLE", "description": "列说明" }
- 上传更新表 Schema:
bq update --schema schema.json 你的项目ID:你的数据集ID.你的外部表名
注意:操作前请确认账号拥有对应 BigQuery 表的 ALTER 权限,同时有权限访问源 Google Sheets 文件,否则会触发权限报错。
操作完成后可执行SELECT * FROM 你的表名 LIMIT 10验证新增列是否能正常读取源数据。
内容的提问来源于stack exchange,提问作者Víctor
相关产品推荐
相关产品推荐

