Snowflake cloud data platform 雪花查询\u历史在仓库暂停后重置

Snowflake cloud data platform 雪花查询\u历史在仓库暂停后重置,snowflake-cloud-data-platform,Snowflake Cloud Data Platform,我使用以下查询从我的雪花数据库中检索查询历史记录 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(M

我使用以下查询从我的雪花数据库中检索查询历史记录

    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)在一段时间的不活动后被挂起,那么下次我尝试检索查询历史时,仓库挂起之前的历史就消失了

我找不到任何文件来解释这一点

有人遇到过这个问题或相关文档可以解释这一点吗


谢谢大家!

我无法确切解释您正在运行的信息模式查询的局限性(有些查询只返回10000行,或者像您所说的,一旦仓库关闭),但这是实际查询历史的有限视图。您可以对所有查询历史使用
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;

1:您的问题指出,在一段不活动期之后,没有指定什么是不活动期

“在一段时间不活动之后,下次我尝试检索查询历史记录时,仓库暂停之前的历史记录将消失。”

如果超过7天,则可以从account_usage表中找到数据。下面是信息模式和帐户使用之间差异的链接

2:您的查询没有在您的查询中指定USER_NAME或WAHREHOUSE_NAME,因此在暂停仓库之前的查询输出可能已经超过了谓词中的4小时。如果您可以延长时间段并检查行为是否仍然存在

3:一般来说,不建议通过查询信息来获取查询历史记录,除非您的应用程序需要没有任何延迟的数据。如果可能,使用ACCOUNT_USAGE表获取查询历史信息

这就是我所做的

1:创建了一个XS仓库

2:将自动挂起设置为5分钟

3:运行了一些查询

4:运行您的查询(未指定用户名或仓库名称),这意味着您正在从所有用户中搜索历史记录

选择“查询文本”、“数据库名称”、“架构名称”、“查询类型”、“用户名”、“角色名称”、“执行状态”、“错误代码”、“开始时间”、“结束时间”、“总运行时间”、“扫描字节数”、“生成行数”
从表(MY_DATABASE.information_schema.query_history(结束时间范围开始=>dateadd(小时,-4,当前时间戳()),当前时间戳())

5:返回了少数100条记录的输出

6:使用附加where子句检查我的用户的数据,该用户在仓库自动挂起之前运行了一些查询,并且返回了一些记录

选择“查询文本”、“数据库名称”、“架构名称”、“查询类型”、“用户名”、“角色名称”、“执行状态”、“错误代码”、“开始时间”、“结束时间”、“总运行时间”、“扫描字节数”、“生成行数”
从表(MY_DATABASE.information_schema.query_history)(结束时间范围开始=>dateadd(小时,-4,当前时间戳()),当前时间戳()),其中用户名='ADITYA'

7:等了10分钟,我的仓库自动暂停


8:重复第5点和第6点,然后再次返回预期的记录。

谢谢!这种解决方法确实有效,但我不明白为什么信息\u schema.query\u历史记录(查询效率更高)似乎没有按照文档所示存储最后7天的查询。这可能是仓库在幕后进行的缓存的一部分。例如,如果一直打开仓库,则查询将能够访问缓存的查询,但如果它终止并重新打开,则会丢失所有缓存的结果。这一定是相似的,但我不能100%准确地回答。嗨,Itay,这种行为听起来不太正确…这不是一个与虚拟仓库相关的缓存问题-事实上,使用不同的虚拟仓库来访问它们的结果应该可以用于此数据库。如果您确实使用另一个WH来运行查询,结果会出现吗?我要检查的一些事情:a)确保在此期间没有重新创建相关数据库b)确保您使用了正确的角色来运行查询c)检查此查询的7天保留期是否在运行Hanks Mike之间过期-我尝试了所有这些事情,查询必须从QueryScript历史中返回,它们只有几分钟的时间,它们出现在结果中,直到仓库被暂停,然后再恢复。提示:考虑在SQL查询的两端使用三个后退(``)来将它们视为相邻的代码块。(如果这些文件是格式化的,阅读起来可能会更容易,不过我承认OP也没有应用任何此类格式。)我在1分钟后暂停了仓库,并查找了不到10分钟前发生的查询。。。所以这绝对不是查询在4小时(我也在没有这样的过滤器的情况下运行)或7天后过期的问题。