GCP查询数据集基表大小报错Unrecognized name: size_bytes求助
GCP BigQuery 查询数据集基表存储容量解决方案
报错原因
你收到Unrecognized name: size_bytes报错的核心原因是:INFORMATION_SCHEMA.TABLES元数据视图仅存储表的基础结构属性(如表名、表类型、创建时间等),不包含存储容量相关的size_bytes字段,该字段归属BigQuery内置的__TABLES__系统表。
另外你原代码使用的是已停止功能更新的Legacy SQL语法,推荐切换为GCP官方主推的标准SQL语法,避免后续兼容性问题。
正确实现代码
单个数据集查询
-- 标准SQL写法,查询指定数据集内所有基表的存储容量 SELECT table_id AS table_name, -- 如需MB单位,将pow(10,9)替换为pow(10,6) ROUND(size_bytes / POW(10,9), 4) AS size_gb, TIMESTAMP_MILLIS(creation_time) AS create_time, TIMESTAMP_MILLIS(last_modified_time) AS update_time FROM `[你的项目ID].[你的数据集ID].__TABLES__` WHERE -- 仅过滤普通基表,1=基表、2=视图、3=外部表 type = 1
全项目跨数据集查询
如果需要统计指定区域下整个项目所有数据集的基表容量,可使用区域级系统表:
SELECT table_id AS table_name, dataset_id, ROUND(size_bytes / POW(10,9), 4) AS size_gb FROM `[你的项目ID].[区域编码].__TABLES__` WHERE type = 1
注意事项
- 代码中的项目ID、数据集ID、区域编码需要替换为你实际使用的资源信息
__TABLES__系统表返回的creation_time、last_modified_time默认是毫秒级时间戳,上述代码已经转换为可读的时间格式
BigQuery SQL适配查询方式
直接在Google Cloud官方文档站点搜索「BigQuery SQL 函数参考」即可获取官方全量文档,内容覆盖所有支持的SQL函数、语法规则、与ANSI标准SQL的差异说明,以及各类元数据视图的字段定义、使用示例,无需依赖第三方站点查询适配方案。
内容的提问来源于stack exchange,提问作者pinklabel
相关产品推荐
相关产品推荐

