模式中所有表的 Redshift 最大值

Redshift max value from all tables in schema

感谢您抽出时间来完成这个!

我有一个 redshift 集群,在一个模式中有多个 tables,所有 tables 都有一个日期字段,说明何时将行插入 table。 每个 table 的日期字段名称都相同。 例如:

1. Schema = public 
   table name = packages
   date field = timestamp
2. Schema = public 
   table name = binary ...
   date field = timestamp

我希望能够遍历上述模式中的所有 table 并获取日期字段的最大值。

谢谢!

首先,“迭代所有 tables”意味着这不是纯粹在 SQL 中完成的。因此,您需要一些层来动态收集架构中所有 table 的列表并在它们上循环。这个循环可以找到每个或创建 SQL 的最大日期,该 SQL 将联合所有信息并产生单个最大值。我倾向于一个迭代每个 table 的循环,因为在单个 SQL 语句中可以处理多少 table 和 table 的数量是有限制的在架构中可能会非常大。

下一个决定是在何处执行此循环。这可以在 Redshift 外部或内部使用存储过程完成。我建议您在外部执行此操作,因为存储过程通常不是最快的方法,并且会带有限制代码功能的限制。 AWS 为您提供了许多与 Redshift 具有不同优势的工具,将它们结合起来可以为您使用 Redshift 做的事情开辟许多新的选择。 Lambda 函数可能是执行此循环操作的不错选择。这确实意味着超越(或增强)“我有一个 JDBC/ODBC 连接到我的数据系统”的方法。如果你能完成这个转变,那么付出的努力通常是值得的。如果不是,您正在查看具有限制和速度的存储过程。