Snowflake用户层级月度Credit用量监控查询准确性疑问及优化求助
问题确认
你对CREDITS_USED_CLOUD_SERVICES字段的判断完全正确:该字段仅统计Snowflake云服务层(包含查询编译、元数据操作、权限校验等非计算类任务)的Credit消耗,不包含虚拟仓库执行查询产生的计算层用量,现有查询的统计结果仅为用户总Credit消耗的一部分,不符合全量统计需求。
正确统计实现方案
1. 现有查询快速修正(仅统计关联到查询的Credit用量)
QUERY_HISTORY视图内提供CREDITS_USED字段,已自动聚合单条查询的计算层用量CREDITS_USED_COMPUTE和云服务层用量CREDITS_USED_CLOUD_SERVICES,直接替换求和字段即可,修正后的查询如下:
SELECT user_name, SUM(CREDITS_USED) AS total_credit_used, SUM(CREDITS_USED_COMPUTE) AS compute_credit_used, SUM(CREDITS_USED_CLOUD_SERVICES) AS cloud_service_credit_used, DATE_TRUNC('MONTH', start_time) AS statistics_month, warehouse_name FROM query_history WHERE start_time >= DATE_TRUNC('MONTH', CURRENT_DATE) GROUP BY user_name, statistics_month, warehouse_name ORDER BY total_credit_used DESC;
2. 全量用量统计补充说明
如果需要统计包含仓库空载运行的所有Credit消耗,需要注意以下规则:
- 虚拟仓库的空载(无查询执行时的运行状态)消耗不会关联到具体用户,仅会记录在
WAREHOUSE_METERING_HISTORY视图中,该部分消耗需要根据实际业务规则分摊到对应仓库的使用用户 - Snowflake官方存在云服务Credit豁免规则:当月云服务总消耗不超过当月计算总用量的10%时,云服务部分不会实际计费,统计最终计费用量时需要适配该规则做差值扣除
QUERY_HISTORY视图默认保留365天的查询记录,如需统计更久周期的用量,需使用METERING_HISTORY系列视图结合用户访问日志做关联统计
内容的提问来源于stack exchange,提问作者danD
相关产品推荐
相关产品推荐

