首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >雪花query_history在仓库暂停后被重置

雪花query_history在仓库暂停后被重置
EN

Stack Overflow用户
提问于 2020-03-21 02:21:35
回答 2查看 1.2K关注 0票数 2

我正在使用以下查询从我的Snowflake数据库中检索查询历史记录。

代码语言:javascript
复制
    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)在一段时间不活动后被挂起,那么下次我尝试检索查询历史时-仓库挂起之前的历史记录就会消失。

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

有没有人遇到这个问题或相关文档可以解释这个问题?

谢谢!

EN

回答 2

Stack Overflow用户

发布于 2020-03-21 02:34:40

我不能确切地解释您正在运行的信息模式查询的限制(其中一些只返回大约10,000行,或者像您所说的那样,一旦关闭仓库),但它是对实际查询历史的有限视图。您可以将snowflake数据库用于所有查询历史记录。

这是一张很大的桌子,所以一定要在上面放上过滤器。下面是一个访问它的示例查询:

代码语言:javascript
复制
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;
票数 2
EN

Stack Overflow用户

发布于 2020-03-23 05:01:05

1:您的问题指出,在一段时间不活动之后,没有具体说明什么是不活动时间。

在一段时间内处于非活动状态后,下一次尝试检索查询历史记录时,仓库挂起前的历史记录将消失。

如果超过7天,则可以从account_usage表中找到数据。下面是INFORMATION_SCHEMA和ACCOUNT_USAGE之间的区别链接。

https://docs.snowflake.com/en/sql-reference/account-usage.html#differences-between-account-usage-and-information-schema

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点,并再次按预期返回记录。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/60779649

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档