在Snowflake中如何查询所有数据库及其对应存储占用大小?
Snowflake数据库存储大小查询实现方案
你可以通过对DATABASE_STORAGE_USAGE_HISTORY函数返回的结果做字段筛选、单位转换和去重处理,直接得到你需要的输出格式:
最终查询SQL
SELECT DATABASE_NAME AS "DatabaseName", -- 字节转换为GB,保留1位小数 ROUND(AVERAGE_DATABASE_BYTES / 1073741824, 1) AS "Size(GB)" FROM TABLE(INFORMATION_SCHEMA.DATABASE_STORAGE_USAGE_HISTORY( -- 取最近1天的统计数据即可获得最新存储值,也可自行调整时间范围 DATEADD('days', -1, CURRENT_DATE()), CURRENT_DATE() )) -- 过滤已删除的数据库记录 WHERE DELETED IS NULL -- 每个数据库仅保留最新的一条统计记录,避免重复输出 QUALIFY ROW_NUMBER() OVER (PARTITION BY DATABASE_NAME ORDER BY USAGE_DATE DESC) = 1 -- 按存储大小倒序排列,也可调整为按数据库名称排序 ORDER BY "Size(GB)" DESC;
可选调整说明
- 如果你需要统计数据库关联的阶段存储和故障保护存储总占用,可以把转换单位的部分替换为:
ROUND((AVERAGE_DATABASE_BYTES + AVERAGE_STAGE_BYTES + AVERAGE_FAILSAFE_BYTES) / 1073741824, 1) AS "Size(GB)" - 如果你需要计算指定时间范围内的平均存储大小,可以删除
QUALIFY语句,添加GROUP BY DATABASE_NAME,并将AVERAGE_DATABASE_BYTES替换为AVG(AVERAGE_DATABASE_BYTES)即可。
内容的提问来源于stack exchange,提问作者petemdonnellygooglemailcom
相关产品推荐
相关产品推荐

