【问题标题】:How do I get the last accessed time stamp for the table in the snowflake?如何获取雪花中表的最后访问时间戳?
【发布时间】:2020-03-19 12:55:08
【问题描述】:

我想获取雪花中表格的最后访问时间戳

【问题讨论】:

标签: snowflake-cloud-data-platform


【解决方案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;
    

    【讨论】:

      猜你喜欢
      • 2021-08-10
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-08-28
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多