我正在使用以下查询从我的Snowflake数据库中检索查询历史记录。
SELECT "QUERY_TEXT", "DATABASE_NAME", "SCHEMA_NAME", "QUERY_TYPE", "USER_NAME", "ROLE_NAME", "EXECUTION_STATUS", "ERROR_CODE", "START_TIME", "END_TIME", "TOTAL_ELAPSED_TIME", "BYTES_SCANNED", "ROWS_PRODUCED"
FROM table(MY_DATABASE.information_schema.query_history(end_time_range_start=>dateadd(HOUR, -4, current_timestamp()), current_timestamp())) 奇怪的是,如果我使用的仓库(size: XS)在一段时间不活动后被挂起,那么下次我尝试检索查询历史时-仓库挂起之前的历史记录就会消失。
我找不到任何文件来解释这一点。
有没有人遇到这个问题或相关文档可以解释这个问题?
谢谢!
发布于 2020-03-21 02:34:40
我不能确切地解释您正在运行的信息模式查询的限制(其中一些只返回大约10,000行,或者像您所说的那样,一旦关闭仓库),但它是对实际查询历史的有限视图。您可以将snowflake数据库用于所有查询历史记录。
这是一张很大的桌子,所以一定要在上面放上过滤器。下面是一个访问它的示例查询:
USE DATABASE snowflake;
USE SCHEMA account_usage;
SELECT *
FROM query_history
WHERE start_time BETWEEN '2020-01-01 00:00' AND '2020-01-03 00:00'
AND DATABASE_NAME = 'DATABASE_NAME'
AND USER_NAME = 'USERNAME'
ORDER BY START_TIME DESC;发布于 2020-03-23 05:01:05
1:您的问题指出,在一段时间不活动之后,没有具体说明什么是不活动时间。
在一段时间内处于非活动状态后,下一次尝试检索查询历史记录时,仓库挂起前的历史记录将消失。
如果超过7天,则可以从account_usage表中找到数据。下面是INFORMATION_SCHEMA和ACCOUNT_USAGE之间的区别链接。
2:您的查询没有在您的查询中指定USER_NAME或WAHREHOUSE_NAME,因此可能是在您的谓词中,在暂停仓库之前,您的查询的输出已经超过了4小时。如果您可以增加时间段,并检查行为是否仍然存在。
3:通常情况下,不建议通过查询INFORMATION_SCHEMA来获取查询历史记录,除非您的应用程序需要无延迟的数据。如果可能,使用ACCOUNT_USAGE表来获取查询历史信息。
这就是我所做的。
1:创建XS仓库
2:将auto_suspend设置为5分钟
3:运行了几个查询
4:运行您的查询(未指定user_name或warehouse_name),这意味着您正在搜索所有用户的历史记录。
SELECT "QUERY_TEXT", "DATABASE_NAME", "SCHEMA_NAME", "QUERY_TYPE", "USER_NAME", "ROLE_NAME", "EXECUTION_STATUS", "ERROR_CODE", "START_TIME", "END_TIME", "TOTAL_ELAPSED_TIME", "BYTES_SCANNED", "ROWS_PRODUCED" FROM table(MY_DATABASE.information_schema.query_history(end_time_range_start=>dateadd(HOUR, -4, current_timestamp()), current_timestamp()))
5:返回100条记录的输出。
6:使用了额外的where子句来检查我的用户的数据,它在Warehouse的auto_suspend之前运行了很少的查询,并且返回了很少的记录。
SELECT "QUERY_TEXT", "DATABASE_NAME", "SCHEMA_NAME", "QUERY_TYPE", "USER_NAME", "ROLE_NAME", "EXECUTION_STATUS", "ERROR_CODE", "START_TIME", "END_TIME", "TOTAL_ELAPSED_TIME", "BYTES_SCANNED", "ROWS_PRODUCED" FROM table(MY_DATABASE.information_schema.query_history(end_time_range_start=>dateadd(HOUR, -4, current_timestamp()), current_timestamp())) WHERE USER_NAME = 'ADITYA'
7:等待了10分钟,所以我的仓库是auto_suspended。
8:重复第5点和第6点,并再次按预期返回记录。
https://stackoverflow.com/questions/60779649
复制相似问题