首页 > 解决方案 > Snowflake SQL - 如何将所有表的当前行数与 24 小时前的行数进行比较?

问题描述

Snowflake 具有时间旅行功能,允许在特定时间戳查询对象。它还有 information_schema.tables,它是一个视图,显示当前存在的所有表的行数。由于这是一个视图,它显然不能与时间旅行结合使用。这是一个问题,因为我需要将所有单个表的当前行数与 24 小时前的行数进行比较。

由于 information_schema.tables 是一个视图,根据定义它是一个查询 - 有没有地方可以找到这个脚本,所以我可以将时间旅行与它结合使用?

如果做不到这一点,是否有某种方法可以使用信息模式中存在的表名加入表?

否则,是否有不同/更好的方法来做到这一点?(不幸的是,每天拍摄快照不是一种选择)

标签: snowflake-cloud-data-platform

解决方案


在我看来,您可以通过两种方式实现这一目标:

  1. 每天一次将 information_schema.tables 中的行数具体化到一个新表中(即不具体化所有表中的所有数据,而只是具体化视图的结果,或者更不用说具体化select sum(ROW_COUNT) from information_schema.tables;.
  2. 对每个表使用时间旅行和运行select count(*) from myTable at(offset => -60*60*24)来获取它们各自的行数,然后将它们总结起来。

推荐阅读