我想通过设置一个查询来查看Redshift中每个表的最后一次写入来监视我们的数据是如何变得陈旧的。每个表都有一个created_at
字段,我可以通过pg_table_def
提取所有表名,但是没有办法在Redshift中设置动态sql(例如SELECT max(created_at) FROM {table})
。
我浏览了其他管理表和视图,但似乎没有解决这个问题。我确定这是一个已经解决的问题,但是,任何人都有一个如何将它们放在一起的提示吗?
答案 0 :(得分:0)
我有类似的要求,在每个表中使用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
可以在循环查看表列表后替换为表名,我将已使用SELECT table_name FROM information_schema.tables
希望这有帮助。