BigQuery信息架构查询报错:无效项目ID及其他问题排查
你遇到的问题本质是BigQuery默认使用US作为查询位置,而你的数据集都部署在europe-west3区域,同时查询语法存在错误,导致三种尝试全部失败,逐个拆解原因如下:
错误原因分析
仅指定区域的查询:
语句SELECT * FROM region-europe-west3.information_schema.tables缺少项目指定,BigQuery会自动使用默认项目,但查询位置默认是US,因此它会去US区域查找该信息表,自然找不到,所以报错提及US区域。仅指定项目名称的查询:
语句SELECT * FROM el-in-dev-poc.information_schema.tables未指定区域,BigQuery默认用US作为查询位置,而你的项目在europe-west3区域的数据集不会出现在US区域的INFORMATION_SCHEMA中,因此报错。同时指定项目和带反引号的区域:
语句SELECT * FROM el-in-dev-poc.region-europe-west3.information_schema.tables的层级解析错误,BigQuery把el-in-dev-poc.region-europe-west3当成了一个项目ID,不符合项目ID的命名规则,所以报错。
正确查询方案
1. 正确的INFORMATION_SCHEMA查询语法
要查询europe-west3区域的全项目表信息,使用以下语句:
SELECT * FROM `el-in-dev-poc`.`region-europe-west3`.INFORMATION_SCHEMA.TABLES
如果要查询特定数据集的表,可指定数据集名称:
SELECT * FROM `el-in-dev-poc.你的数据集名`.`region-europe-west3`.INFORMATION_SCHEMA.TABLES
2. 必须设置查询位置为europe-west3
- 在BigQuery UI中:查询编辑器上方的「位置」下拉框选择
europe-west3 - 使用CLI时:添加
--location=europe-west3参数执行查询
这样就能确保BigQuery在正确的区域查找INFORMATION_SCHEMA,避免US区域相关的报错。
内容的提问来源于stack exchange,提问作者Moseleyi

