如何查询Snowflake账户中各数据表对应的存储credit消耗量
Snowflake单表存储Credit消耗量查询方案
结论
Snowflake官方Information Schema中没有直接存储单表对应存储Credit消耗量的视图或表。存储类Credit以账户/组织为维度按日结算,计费逻辑为账户总存储量乘以对应费率,平台不会直接做单表维度的Credit分摊统计。
手动计算方法
你可以结合已查询到的TABLE_STORAGE_METRICS数据,搭配账户存储费率自行计算单表的存储Credit消耗,操作步骤如下:
- 第一步:查询你的账户当前每TB存储每日对应的Credit费率,执行以下SQL:
SELECT effective_rate FROM organization_usage.rate_sheet_daily WHERE usage_type = 'STORAGE' AND is_current = 'TRUE';
返回的effective_rate即为每TB存储每天消耗的Credit数,该数值和你的账户合同定价绑定,不同账户可能存在差异。
- 第二步:计算单表的日存储Credit消耗,针对你筛选出的12张超100TB的表,可以使用以下查询直接得到结果:
SELECT table_catalog AS 所属数据库, table_schema AS 所属schema, table_name AS 表名, -- 计算单表总存储量(TB),存储计费覆盖活动存储、时间旅行存储、故障恢复存储三类 ROUND((active_bytes + time_travel_bytes + failsafe_bytes) / POWER(1024,4),2) AS 总存储量_TB, -- 替换下方的<存储费率>为上一步查询到的effective_rate数值 ROUND(总存储量_TB * <存储费率>,2) AS 日消耗存储Credit FROM information_schema.table_storage_metrics WHERE 总存储量_TB > 100 ORDER BY 总存储量_TB DESC;
补充说明
- 上述计算结果为估算值,账单中的总存储Credit还包含未分摊到单表的共享存储、云服务侧存储等消耗,因此所有单表的存储Credit加总与账单总存储Credit会存在小幅差异,完全可以满足大表成本排查的场景需求。
- 如果需要做100%精准的成本分摊,可以先从
METERING_DAILY_HISTORY视图中取出当日总存储Credit消耗,再按单表存储占账户总存储的比例做二次分摊即可。
内容的提问来源于stack exchange,提问作者danD
相关产品推荐
相关产品推荐

