2

有一种情况,我需要在雪花中清理我的数据库。我们有大约 40 个数据库,每个数据库有 100 多个表。有些每天都在加载,有些则没有,但每天都在使用。但是,已经添加了许多表用于测试和其他目的(由许多开发人员和用户)。

现在我们正在清理未使用的表。

我们有 query_history 表,它为我们提供了过去运行的查询信息,但是它有数据库、仓库、用户等字段,但没有表。

我想知道有什么方法可以编写一个查询,让我们在过去 10 天内没有使用表名(DDL 和 DML b0th)。

4

2 回答 2

1

信息模式有一个表格视图,并且您有一个最后更改的列,这对您有用吗?它不会为您提供最后访问的表,但会提供最后更改的表。除此之外,目前没有简单的方法可以从雪花中获取此信息。我也需要这个功能,我想我们应该要求这个功能。

select table_schema,
       table_name,
       last_altered
from information_schema.tables
where table_type = 'BASE TABLE'
      and last_altered < dateadd( 'DAY', -10, current_timestamp() ) 
order by table_schema,
         table_name;
于 2020-09-06T15:01:18.647 回答
1
select obj.value:objectName::string objName
      , max(query_start_time) as QUERY_DATE_TIME
    from snowflake.account_usage.access_history 
    , table(flatten(direct_objects_accessed)) obj
    group by 1
    order by QUERY_DATE_TIME desc;
于 2021-09-23T12:37:17.193 回答