You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Snowflake query_history()仅返回当日查询 如何获取近7天查询记录

Snowflake查询最近7天全量查询记录的可行方案

1. 补充query_history()函数的显式时间范围参数

information_schema.query_history()存在未明确说明的返回优先级:当指定的RESULT_LIMIT小于目标时间范围内的查询总条数时,会优先返回最新的查询记录。若你的账户单日查询量已经超过你设置的10000阈值,就会仅返回当日数据。你需要显式传入时间范围参数,示例语句如下:

SELECT DATABASE_NAME, QUERY_TYPE, USER_NAME, START_TIME, EXECUTION_TIME
FROM TABLE(information_schema.query_history(
  START_TIME => DATEADD('day', -7, CURRENT_TIMESTAMP()),
  END_TIME => CURRENT_TIMESTAMP(),
  RESULT_LIMIT => 10000
))
ORDER BY START_TIME DESC;

2. 拆分时间范围分段拉取,规避结果集上限

information_schema.query_history()的RESULT_LIMIT存在10000条的硬上限,即使设置更高数值也不会生效。如果你的账户7天内总查询量超过10000条,需要拆分时间范围分段拉取:

  • 优先按天拆分,每天单独执行一次查询汇总结果
  • 若单日查询量仍超过10000条,进一步按小时拆分时间范围拉取

3. 使用ACCOUNT_USAGE层的QUERY_HISTORY视图

要绕过information schema的函数结果限制,可以使用账号层级的SNOWFLAKE.ACCOUNT_USAGE.QUERY_HISTORY视图,该视图存储了账户内全量的查询历史,访问前需要确认当前角色已被授予MONITOR USAGE或更高权限,查询时增加时间过滤条件可以大幅提升加载速度,避免长时间等待:

SELECT DATABASE_NAME, QUERY_TYPE, USER_NAME, START_TIME, EXECUTION_TIME
FROM SNOWFLAKE.ACCOUNT_USAGE.QUERY_HISTORY
WHERE START_TIME >= DATEADD('day', -7, CURRENT_TIMESTAMP())
ORDER BY START_TIME DESC;

权限排查

如果上述方案执行后仍只能看到部分查询记录,确认当前使用的角色权限:普通角色默认仅能查询当前用户自己的历史记录,要查看全账户所有用户的查询记录,需要角色被显式授予全账户查询监控权限,或使用ACCOUNTADMIN、SECURITYADMIN这类高权限角色执行查询。


内容的提问来源于stack exchange,提问作者Hennie de Nooijer

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.23 18:15:00