如何获取Snowflake节点执行时间?替代Snowsight UI的实用方案
获取Snowflake查询节点执行时间的替代方案
有两种比Snowsight UI更灵活易用的方式来获取查询节点的执行时间:
1. 利用QUERY_HISTORY视图解析剖面数据
Snowflake的ACCOUNT_USAGE.QUERY_HISTORY或INFORMATION_SCHEMA.QUERY_HISTORY视图包含QUERY_PROFILE_DATA字段,这个JSON字段存储了完整的查询剖面信息,包括每个节点的执行时间。你可以通过SQL解析该字段,按需提取数据:
SELECT qh.QUERY_ID, TRIM(qh.QUERY_TEXT, '\n') AS QUERY_TEXT, qpd.value:node_id::INT AS NODE_ID, qpd.value:node_type::STRING AS NODE_TYPE, qpd.value:execution_time_ms::INT AS EXECUTION_TIME_MS FROM ACCOUNT_USAGE.QUERY_HISTORY qh, LATERAL FLATTEN(input => qh.QUERY_PROFILE_DATA:plan_nodes) qpd WHERE qh.QUERY_ID = 'abc123xyz' -- 替换为你的查询ID ORDER BY NODE_ID;
注意:ACCOUNT_USAGE.QUERY_HISTORY的数据有15-45分钟的延迟,如果需要实时数据,改用INFORMATION_SCHEMA.QUERY_HISTORY。
2. 使用SYSTEM$QUERY_PROFILE函数
这个函数可以直接针对特定查询ID返回实时的查询剖面数据,包含节点执行时间等详细信息,适合快速查看最新完成的查询:
SELECT qpd.value:node_id::INT AS NODE_ID, qpd.value:node_type::STRING AS NODE_TYPE, qpd.value:execution_time_ms::INT AS EXECUTION_TIME_MS FROM TABLE(SYSTEM$QUERY_PROFILE('abc123xyz')) qp, -- 替换为你的查询ID LATERAL FLATTEN(input => qp.PROFILE_DATA:plan_nodes) qpd ORDER BY NODE_ID;
这两种方式的优势在于:可以通过SQL自定义筛选条件、排序规则,还能批量导出数据或整合到自动化监控脚本中,比UI手动查看更高效,尤其适合批量分析多个查询的执行性能。
内容的提问来源于stack exchange,提问作者zernager
相关产品推荐
相关产品推荐

