有没有办法知道上次在雪花中访问表的时间

Posted

技术标签:

【中文标题】有没有办法知道上次在雪花中访问表的时间【英文标题】:Is there a way to know when a table was last accessed in snowflake 【发布时间】:2020-03-19 05:32:35 【问题描述】:

我目前正在研究雪花,我需要通过查询或手动查找上次在雪花中访问表的时间。有人可以帮我吗?谢谢你

【问题讨论】:

【参考方案1】:

如果您的意思是选择,我认为没有办法通过表来完成,您必须监视最后执行的查询才能找到该信息:https://docs.snowflake.net/manuals/sql-reference/functions/query_history.html

更新方面:SYSTEM$LAST_CHANGE_COMMIT_TIME 应该为您提供所需的信息。

【讨论】:

这将返回执行的查询的总历史..但我想知道上次访问表的时间...你能帮我吗 嗨 Nishanth,试试这样的方法:select end_time, * from table(information_schema.query_history()) where query_text like '%%' and execution_status='SUCCESS' order by 1 desc; 嗨,迈克,它正在工作,但向我展示了过去 7 天的历史记录是否有可能获得更古老的历史记录 可以参考account_usage中的query_history,而不是information_schema【参考方案2】:

Understanding Access History

Snowflake 中的访问历史是指用户查询是否读取列数据。 Snowflake 不记录写操作。用户访问历史可以在 Access_History 视图中找到(在本主题中)。

ACCESS_HISTORY 视图中的每一行包含每个查询的单个记录,并描述查询直接访问的列(即基表)和间接访问的列(即派生对象,例如视图)。这些记录由于用户(即查询运算符)、查询、表或视图、列和数据之间存在直接联系,因此有助于监管合规性审计并提供对流行且经常访问的表和列的见解。

ACCESS_HISTORY 视图的其他用例包括:

发现未使用的数据以确定是归档还是删除数据。 验证数据更改以在删除或更改给定表或视图之前通知用户。 审核数据访问以符合法规要求和数据治理计划。

ACCESS_HISTORY View

此帐户使用情况视图可用于查询过去 365 天(1 年)内 Snowflake 对象(例如表、视图、列)的访问历史记录。

使用 object_id 值 32998411400350,确定最近 30 天内访问发生的时间:

SELECT query_id
       , query_start_time
FROM access_history
     , lateral flatten(base_objects_accessed) f1
WHERE f1.value:"objectId"::int=32998411400350
AND f1.value:"objectDomain"::string='Table'
AND query_start_time >= dateadd('day', -30, current_timestamp())
;

【讨论】:

以上是关于有没有办法知道上次在雪花中访问表的时间的主要内容,如果未能解决你的问题,请参考以下文章

有没有办法在雪花中旋转列到行?

外部表的雪花外部阶段文件推荐

R中databricks中的SQL雪花查询

如何找到雪花中的总连接数

从雪花历史中的query_text中提取表

雪花警报长时间运行的查询