从红移表中获取上次更新时间戳

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@

希望这会有所帮助。

【讨论】:

以上是关于从红移表中获取上次更新时间戳的主要内容,如果未能解决你的问题,请参考以下文章

红移表中的更新

提高效率的红移表设计

将镶木地板文件加载到红移时如何格式化时间戳字段?

Redshift 获取具有最高优先级和时间戳的行

仅向红移表添加新的或修改的数据

通过按 F9 显示文件上次更新时间的时间戳(仅编辑不够)