如何通过Session ID从Information Schema获取Snowflake实时会话客户端信息
解决Snowflake实时获取运行会话客户端详情的问题
方案1:直接扩展原查询字段
你当前使用的query_history_by_warehouse视图本身就包含CLIENT_DRIVER和APPLICATION字段,和Snowflake UI活动页面展示的内容完全一致,之前的查询只是未选择这些字段。直接修改SQL即可实时获取无延迟数据:
select query_id, query_text, query_type, user_name, start_time, session_id, client_driver, -- 对应UI的Client Driver内容 application -- 对应UI的Application内容 from table(snowflake.information_schema.query_history_by_warehouse(WAREHOUSE_NAME => 'COMPUTE_WH')) where execution_time > 180000 and EXECUTION_STATUS='RUNNING';
方案2:关联实时会话视图
如果需要更多会话维度的细节,可以关联INFORMATION_SCHEMA.SESSIONS实时视图(无数据延迟),该视图包含更完整的客户端信息:
select qh.query_id, qh.query_text, qh.query_type, qh.user_name, qh.start_time, qh.session_id, s.client_driver, s.application, s.client_os, s.client_version from table(snowflake.information_schema.query_history_by_warehouse(WAREHOUSE_NAME => 'COMPUTE_WH')) qh join snowflake.information_schema.sessions s on qh.session_id = s.session_id where qh.execution_time > 180000 and qh.EXECUTION_STATUS='RUNNING';
关键说明
query_history_by_warehouse和INFORMATION_SCHEMA.SESSIONS均为实时视图,数据与Snowflake UI完全同步,无延迟问题。account_usage.sessions属于账户级历史表,存在约24小时的数据延迟,不适合获取当前运行会话的实时信息。
内容的提问来源于stack exchange,提问作者Aneesha
相关产品推荐
相关产品推荐

