从红移表中获取上次更新时间戳
Posted
技术标签:
【中文标题】从红移表中获取上次更新时间戳【英文标题】:Get last-update timestamp from redshift tables 【发布时间】:2017-05-17 21:13:54 【问题描述】:我想通过设置一个查询来监控我们的数据的陈旧程度,该查询将最后一次写入 Redshift 中的每个表。每个表都有一个created_at
字段,我可以通过pg_table_def
拉取所有表名,但是在Redshift中没有办法设置动态sql(例如SELECT max(created_at) FROM table)
。
我浏览了其他管理表和视图,但似乎没有解决这个问题。不过,我确信这是一个已解决的问题,有人知道如何将它们组合在一起吗?
【问题讨论】:
您需要编写一个应用程序来查询表名列表,然后遍历它们并为每个表创建一个查询。只需几行 Python 代码。 您需要动态执行此操作吗?如果它是一个固定的表列表,您可以在一个视图中合并多个 select 语句。 @Nathan 目前已修复,但我们的团队无疑会在未来添加/删除表格,我不想经常更新该列表。 【参考方案1】:我对使用每个表中的 LAST_UPDATED
列更新表的最后访问时间有类似的要求。我是这样完成的:
UPDATE UPDATION_RECORD_TABLE SET LAST_MODIFIED = (SELECT MAX(LAST_UPDATED) FROM %s) WHERE TABLE_NAME = '%s';
这里,UPDATION_RECORD_TABLE 是一个有两列的表,表的名称和它们的最后更新日期。使用 Python 代码(使用pyscopg2)执行上述 SQL 查询时,值 %s
可以在循环遍历表列表后替换为表名,我已经使用 @ 获取987654325@
希望这会有所帮助。
【讨论】:
以上是关于从红移表中获取上次更新时间戳的主要内容,如果未能解决你的问题,请参考以下文章