【问题标题】: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 目前已修复,但我们的团队无疑会在未来添加/删除表格,我不想经常更新该列表。

标签: amazon-redshift dynamic-sql


【解决方案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@

希望这会有所帮助。

【讨论】:

    猜你喜欢
    • 2010-12-17
    • 1970-01-01
    • 1970-01-01
    • 2010-09-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多