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天后过期的问题。