如何为多个查询获取GET_QUERY_OPERATOR_STATS()统计信息?
获取多个查询的算子统计信息方法
要批量获取多个查询的算子统计,可以结合Snowflake的查询历史视图和GET_QUERY_OPERATOR_STATS()函数,通过以下方式实现:
方法一:使用LATERAL JOIN关联查询历史与算子统计
通过查询历史视图筛选目标查询,再用LATERAL JOIN调用函数逐个获取统计:
SELECT q.QUERY_ID, q.QUERY_TEXT, q.START_TIME, ops.* FROM INFORMATION_SCHEMA.QUERY_HISTORY q, LATERAL GET_QUERY_OPERATOR_STATS(q.QUERY_ID) ops WHERE q.START_TIME >= DATEADD(HOUR, -24, CURRENT_TIMESTAMP()) -- 筛选最近24小时的查询 AND q.QUERY_TYPE = 'SELECT' -- 可选:按查询类型过滤 ORDER BY q.START_TIME DESC;
方法二:横向展开算子统计字段
如果需要提取算子统计的特定字段(比如算子类型、处理行数),可以在SELECT中直接调用函数并转换数据类型:
SELECT QUERY_ID, QUERY_TEXT, (GET_QUERY_OPERATOR_STATS(QUERY_ID):operator_type)::STRING AS OPERATOR_TYPE, (GET_QUERY_OPERATOR_STATS(QUERY_ID):rows_produced)::NUMBER AS ROWS_PRODUCED FROM INFORMATION_SCHEMA.QUERY_HISTORY WHERE START_TIME >= DATEADD(DAY, -7, CURRENT_TIMESTAMP()) -- 筛选最近7天的查询 LIMIT 100;
注意事项
- 确保执行查询的角色拥有
MONITOR权限或能访问查询历史视图的权限 GET_QUERY_OPERATOR_STATS()返回JSON格式数据,需用::语法转换为对应数据类型- 可根据需求选择不同的查询历史视图(如
QUERY_HISTORY_BY_SESSION、QUERY_HISTORY_BY_WAREHOUSE)精准筛选目标查询
内容的提问来源于stack exchange,提问作者Felipe Hoffa
相关产品推荐
相关产品推荐

