snowflake-cloud-data-platform - Snowflake SQL - 如何将所有表的当前行数与 24 小时前的行数进行比较?
问题描述
Snowflake 具有时间旅行功能,允许在特定时间戳查询对象。它还有 information_schema.tables,它是一个视图,显示当前存在的所有表的行数。由于这是一个视图,它显然不能与时间旅行结合使用。这是一个问题,因为我需要将所有单个表的当前行数与 24 小时前的行数进行比较。
由于 information_schema.tables 是一个视图,根据定义它是一个查询 - 有没有地方可以找到这个脚本,所以我可以将时间旅行与它结合使用?
如果做不到这一点,是否有某种方法可以使用信息模式中存在的表名加入表?
否则,是否有不同/更好的方法来做到这一点?(不幸的是,每天拍摄快照不是一种选择)
解决方案
在我看来,您可以通过两种方式实现这一目标:
- 每天一次将 information_schema.tables 中的行数具体化到一个新表中(即不具体化所有表中的所有数据,而只是具体化视图的结果,或者更不用说具体化
select sum(ROW_COUNT) from information_schema.tables;
. - 对每个表使用时间旅行和运行
select count(*) from myTable at(offset => -60*60*24)
来获取它们各自的行数,然后将它们总结起来。
推荐阅读
- flutter - 将列表中的字符串项与另一个字符串合并
- c# - 将 Angular 2 与 .NET Framework 一起使用
- node.js - 取决于多个并行 gulp 任务的完成情况
- asp.net-core - 使用 eureka 的服务发现在 docker 容器中不起作用
- java - 删除另一个地图中嵌套地图的值
- mysql - MySQL 唯一键不用作 SELECT 的索引
- c++ - 我们可以动态地将操作插入到我们的函数中吗?
- javascript - 在 `react-tooltip` 中多行显示文本
- php - 无法使用 github.com/web-token/jwt-framework 解密 JWE 令牌
- ios - 如何使用swift在ios中使用upi深度链接打开phonepe或google pay