有一种情况,我需要在雪花中清理我的数据库。我们有大约 40 个数据库,每个数据库有 100 多个表。有些每天都在加载,有些则没有,但每天都在使用。但是,已经添加了许多表用于测试和其他目的(由许多开发人员和用户)。
现在我们正在清理未使用的表。
我们有 query_history 表,它为我们提供了过去运行的查询信息,但是它有数据库、仓库、用户等字段,但没有表。
我想知道有什么方法可以编写一个查询,让我们在过去 10 天内没有使用表名(DDL 和 DML b0th)。
有一种情况,我需要在雪花中清理我的数据库。我们有大约 40 个数据库,每个数据库有 100 多个表。有些每天都在加载,有些则没有,但每天都在使用。但是,已经添加了许多表用于测试和其他目的(由许多开发人员和用户)。
现在我们正在清理未使用的表。
我们有 query_history 表,它为我们提供了过去运行的查询信息,但是它有数据库、仓库、用户等字段,但没有表。
我想知道有什么方法可以编写一个查询,让我们在过去 10 天内没有使用表名(DDL 和 DML b0th)。
信息模式有一个表格视图,并且您有一个最后更改的列,这对您有用吗?它不会为您提供最后访问的表,但会提供最后更改的表。除此之外,目前没有简单的方法可以从雪花中获取此信息。我也需要这个功能,我想我们应该要求这个功能。
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;
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;