配置BigQuery外部表连接BigTable时columns字段报错问题
问题解决:BigQuery外部表连接BigTable时
columns配置报错 问题背景
在BigQuery里建外部表查询BigTable数据,添加columns字段后执行SQL报错:
invalid bigtable_options for format CLOUD_BIGTABLE.
移除columns字段后SQL可正常运行,但返回的是所有列的原始格式(包含aAA.column.name、aAA.column.cell.value这类字段),而需求是只提取指定列(将xxx作为单独字段,对应行键4271的数值30)。
报错的原SQL代码:
CREATE EXTERNAL TABLE dev_test.telem_test OPTIONS ( format = 'CLOUD_BIGTABLE', uris = ['https://googleapis.com/bigtable/projects/telem/instances/dbb-bigtable/tables/db1'], bigtable_options = """ { bigtableColumnFamilies: [ { "familyId": "aAA", "type": "string", "encoding": "string", "columns": [ { "qualifierEncoded": string, "qualifierString": string, "fieldName": "xxx", "type": string, "encoding": string, "onlyReadLatest": false } ] } ], readRowkeyAsString: true } """ );
修正后的可行SQL
CREATE EXTERNAL TABLE dev_test.telem_test OPTIONS ( format = 'CLOUD_BIGTABLE', uris = ['https://googleapis.com/bigtable/projects/telem/instances/dbb-bigtable/tables/db1'], bigtable_options = """ { "bigtableColumnFamilies": [ { "familyId": "aAA", "columns": [ { "qualifierString": "xxx", "fieldName": "xxx", "type": "integer", "onlyReadLatest": true } ] } ], "readRowkeyAsString": true } """ );
关键修正说明
- JSON语法规范:原配置中
bigtableColumnFamilies、readRowkeyAsString未加双引号,不符合JSON语法要求,所有键名必须用双引号包裹 - 占位符替换:
string是参数占位符,需替换为实际数据类型——比如值为数字时写"integer",字符串则写"string" - 移除冗余参数:
qualifierEncoded、encoding这类不需要的参数可直接删除,避免多余配置引发错误 - 只读最新值:将
onlyReadLatest设为true,确保只返回每行的最新单元格值,正好匹配预期的结果格式
执行修正后的SQL后,查询dev_test.telem_test即可得到目标格式:
| rowkey | xxx |
|---|---|
| 4271 | 30 |
内容的提问来源于stack exchange,提问作者GK89
相关产品推荐
相关产品推荐

