如何获取雪花中表的最后访问时间戳?
Posted
技术标签:
【中文标题】如何获取雪花中表的最后访问时间戳?【英文标题】:How do I get the last accessed time stamp for the table in the snowflake? 【发布时间】:2020-03-19 12:55:08 【问题描述】:我想获取雪花中表格的最后访问时间戳
【问题讨论】:
这能回答你的问题吗? Is there a way to know when a table was last accessed in snowflake 【参考方案1】:并不总是理想的,但为一次性问题找到此问题的一种快速方法是使用 QUERY_HISTORY
SELECT START_TIME, *
FROM TABLE(INFORMATION_SCHEMA.QUERY_HISTORY())
WHERE QUERY_TEXT LIKE '%MYSCHEMA.MYTABLE%';
更新:查询以专门获取最近的查询时间。必须自己过滤掉 QUERY_HISTORY 查询。这并不是特别快,并且确实要求运行它的角色可以访问所有相关历史记录。
SELECT MAX(START_TIME)
FROM TABLE(INFORMATION_SCHEMA.QUERY_HISTORY())
WHERE QUERY_TEXT ILIKE '%CONFIG.PIPELINE_LOG%'
AND NOT QUERY_TEXT ILIKE '%INFORMATION_SCHEMA.QUERY_HISTORY%';
【讨论】:
这个查询给出了完整的查询历史。但是我需要我给出的特定表名,然后我需要它最后一次访问时间戳的时间。 使用 @David Garrison 提供给您的相同基本查询,但只需将其更改为 SELECT MAX(start_time) SELECT MAX(start_time) 出现错误,您能否添加完整的查询。 但是,上面的查询显示了查询历史,但我需要特定表的最后访问时间戳(当我在查询中给出表的名称时,最后访问的详细信息和时间)而不是查询历史。 更新后的查询只返回最近一次查询的时间,而不是完整的日志。【参考方案2】:希望这种方法会有所帮助
重要提示: 这不是一个非常合适的方法,因为用户必须具有 AccountAdmin 访问权限,才能在 snowflake.account_usage 架构上运行查询,并且查询将有一点延迟,因为它是 account_usage 架构的一部分。如果数据量太大,也会产生WH成本
select * from "SNOWFLAKE"."ACCOUNT_USAGE"."QUERY_HISTORY"
where
query_text like '%STORE_SALES%' and
query_type = 'SELECT'
order by START_TIME DESC
LIMIT 1
或者,如果要求仅限于过去 14 天的历史记录,请使用历史记录选项卡,该选项卡使用简单的过滤子句无需花费任何成本。
【讨论】:
【参考方案3】:这是一个较老的问题,但我正在回答这个问题,因为 Snowflake 添加了一项新功能来跟踪跨越 1 年的上次访问。由于未从创建旧对象时跟踪此信息,因此您只会看到自跟踪开始以来的访问历史记录。
现在“SNOWFLAKE”.“ACCOUNT_USAGE”.“ACCESS_HISTORY”中有一个视图。您可以通过展平base_objects_accessed
数组来查看如何查询它:
select * from "SNOWFLAKE"."ACCOUNT_USAGE"."ACCESS_HISTORY",
LATERAL FLATTEN(base_objects_accessed) limit 100;
【讨论】:
以上是关于如何获取雪花中表的最后访问时间戳?的主要内容,如果未能解决你的问题,请参考以下文章