如何获取BigQuery指定项目下各数据库的字节大小?
BigQuery项目下各数据集(数据库)大小统计落地方法
BigQuery中通常所说的“数据库”对应产品内的**数据集(Dataset)**层级,不需要依赖第三方工具,两种可直接落地的方案:
- 方案1:控制台单SQL查询(最便捷,零成本)
打开BigQuery查询编辑器,替换SQL里的项目ID、区域参数后直接运行即可,结果会直接返回每个数据集的总字节数、换算后的GB/TB数值:
SELECT table_schema AS dataset_name, SUM(size_bytes) AS total_storage_bytes, ROUND(SUM(size_bytes) / POW(1024, 3), 2) AS total_storage_gb, ROUND(SUM(size_bytes) / POW(1024, 4), 2) AS total_storage_tb FROM `替换成你的项目ID.区域占位符.INFORMATION_SCHEMA.TABLE_STORAGE` WHERE -- 过滤下划线开头的系统自动生成临时数据集、匿名数据集 table_schema NOT LIKE '\_%' GROUP BY dataset_name ORDER BY total_storage_bytes DESC;
注意事项:
- 区域占位符要和你数据集所在区域匹配,比如美区填
region-us,香港区填region-asia-east2,如果项目跨多区域,每个区域单独跑一次查询后合并结果即可- 运行账号需要拥有项目下所有数据集的表查看权限,项目内置的编辑者、查看者角色默认满足权限要求
- 该查询属于元数据查询,不会产生数据扫描费用
- 方案2:bq命令行脚本统计(适合自动化定时场景)
如果需要把统计逻辑落到本地脚本、定时任务里跑,直接用gcloud套件自带的bq命令即可:- 先拉取项目下所有用户自建数据集列表:
bq ls --project_id 替换成你的项目ID | grep -v '^_' | awk '{print $1}' | tail -n +3- 遍历拿到的数据集列表,逐个统计数据集下所有表的存储字节数求和即可,单数据集统计命令示例:
把两步逻辑拼成循环脚本,就能批量输出所有数据集的大小,结果可以直接导出为本地文件留存。bq query --use_legacy_sql=false --format=pretty "SELECT ROUND(SUM(size_bytes)/POW(1024,3),2) as size_gb FROM \`替换成你的项目ID.目标数据集名.__TABLES__\`"
内容的提问来源于stack exchange,提问作者Derek Hu
相关产品推荐
相关产品推荐

