Snowflake cloud data platform 雪花SQL-如何将所有表的当前行数与24小时前的行数进行比较?

Snowflake cloud data platform 雪花SQL-如何将所有表的当前行数与24小时前的行数进行比较?,snowflake-cloud-data-platform,Snowflake Cloud Data Platform,Snowflake具有时间旅行功能,允许在特定时间戳查询对象。它还包含信息_schema.tables,这是一个视图,显示当前存在的所有表的行数。由于这是一个视图,它显然不能与时间旅行结合使用。这是一个问题,因为我需要将所有单个表的当前行数与24小时前的行数进行比较 由于information_schema.tables是一个视图,根据定义,它是一个查询-是否有地方可以找到用于此的脚本,以便我可以将时间旅行与它结合使用 如果做不到这一点,是否有某种方法可以使用信息架构中的表名连接到表上 否则,是

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

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

如果做不到这一点,是否有某种方法可以使用信息架构中的表名连接到表上


否则,是否有其他/更好的方法?(不幸的是,每天拍摄快照不是一种选择)

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

  • 每天一次将information_schema.tables中的行数具体化为一个新表(即,不具体化所有表中的所有数据,而只是具体化视图的结果,更不用说仅具体化information_schema.tables中的
    选择总和(行数)
  • 使用time travel并运行
    从myTable at(offset=>-60*60*24)中为每个表选择count(*)
    ,以获取它们各自的行计数,然后将它们相加

  • 不幸的是,每天计数的快照无法启动。对于第二点,我们的想法是能够在不使用表名硬编码的情况下使其可扩展-我们已经有超过400个表,将来可能还会添加更多表。为什么第一点无法启动?关于第二点:您还可以编写存储过程,从information_schema.tables中遍历所有表,然后对每个表运行查询,这样做既灵活又不硬编码。恐怕公司在创建表方面有限制。我考虑过使用循环,甚至编写了一个脚本,从信息模式中提取表名并使用相对表查询,但不幸的是Snowflake根本不支持循环,它确实支持循环。存储过程可以用JavaScript编写,JavaScript具有循环语法。链接到Snowflake中的存储过程:我正在试图理解-为什么每天的行数快照是不可接受的?