如何查询Snowflake中近期未使用角色的最后执行查询时间?
查询Snowflake角色最后执行查询的日期
不用纠结query_history_by_user函数,直接查Snowflake的系统视图就能搞定——QUERY_HISTORY视图里自带ROLE_NAME字段,能直接关联到执行查询时所用的角色。
基础查询语句
SELECT ROLE_NAME, MAX(START_TIME) AS LAST_QUERY_EXECUTION_TIME FROM TABLE(INFORMATION_SCHEMA.QUERY_HISTORY()) WHERE ROLE_NAME IS NOT NULL GROUP BY ROLE_NAME ORDER BY LAST_QUERY_EXECUTION_TIME DESC;
进阶用法
- 扩大时间范围:默认QUERY_HISTORY只保留最近7天数据,如果要查更久的(比如30天),可以指定时间区间:
SELECT ROLE_NAME, MAX(START_TIME) AS LAST_QUERY_EXECUTION_TIME FROM TABLE(INFORMATION_SCHEMA.QUERY_HISTORY( DATEADD('day', -30, CURRENT_TIMESTAMP()), CURRENT_TIMESTAMP() )) WHERE ROLE_NAME IS NOT NULL GROUP BY ROLE_NAME ORDER BY LAST_QUERY_EXECUTION_TIME DESC;
- 排除系统角色:如果不想看ACCOUNTADMIN这类默认角色,加个过滤条件:
AND ROLE_NAME NOT IN ('ACCOUNTADMIN', 'SYSADMIN', 'SECURITYADMIN', 'USERADMIN')
- 查询特定角色:直接锁定目标角色:
WHERE ROLE_NAME = 'YOUR_TARGET_ROLE'
权限说明
只有拥有MONITOR权限的角色(比如ACCOUNTADMIN、SECURITYADMIN)能查看全账户的查询历史,普通用户只能查到自己的操作记录。另外,查询历史的保留时长由账户配置决定,超出期限的记录无法检索。
内容的提问来源于stack exchange,提问作者Marty_C137
相关产品推荐
相关产品推荐

