在BigQuery中查询INFORMATION_SCHEMA.VIEWS遇权限与语法错误求助
问题分析与解决
第一个错误:访问region-us.INFORMATION_SCHEMA.VIEWS被拒绝
你尝试直接查询项目+区域级的INFORMATION_SCHEMA视图,但BigQuery的INFORMATION_SCHEMA.VIEWS是数据集级别的元数据视图,无法通过[project].[region].INFORMATION_SCHEMA.VIEWS的方式跨所有数据集查询。正确做法是针对具体数据集查询,比如要查看google_trends数据集的视图元数据,执行:
SELECT * FROM `bigquery-public-data.google_trends.INFORMATION_SCHEMA.VIEWS`
另外,部分公开数据集可能不在US区域,若你当前默认位置与数据集所在区域不匹配,需在查询时指定位置(如添加--location=EU参数,或在UI中选择对应区域),否则会触发“不存在于US”的提示。
第二个错误:项目ID格式无效
你的SQL语法存在错误,将项目ID和数据集ID错误拼接为bigquery-public-data.google_trends,被BigQuery识别为无效项目ID。正确的TABLE_STORAGE查询语法分两种情况:
- 查询单个数据集的存储信息:
SELECT * FROM `bigquery-public-data.google_trends.INFORMATION_SCHEMA.TABLE_STORAGE`
- 跨数据集查询(需指定项目和区域):
SELECT * FROM `region-us.INFORMATION_SCHEMA.TABLE_STORAGE` WHERE table_catalog = 'bigquery-public-data' AND table_schema = 'google_trends'
注:TABLE_STORAGE视图需要你对目标数据集拥有bigquery.dataViewer权限,公开数据集默认已将该权限授予所有用户,只要语法正确即可访问。
核心总结
- BigQuery的INFORMATION_SCHEMA元数据视图分为项目级和数据集级,需根据查询目标使用对应语法,不能混淆层级。
- 公开数据集的元数据查询必须针对具体数据集,或通过项目级视图添加过滤条件实现,无法直接用项目+区域的方式跨数据集查询。
- 确保查询位置与数据集所在位置一致,避免“不存在于该区域”的错误。
内容的提问来源于stack exchange,提问作者Pratzz
相关产品推荐
相关产品推荐

