2017-05-17 99 views
0

我想通過設置一個查詢來分析Redshift中每個表的最後一次寫入操作,從而監視數據是否過時。每個表都有一個created_at領域,我可以通過pg_table_def拉所有的表名,但沒有辦法建立動態SQL紅移(如SELECT max(created_at) FROM {table})從紅移表獲取最新更新時間戳

我也通過其他管理表和視圖潛水,但沒有我敢肯定,這是一個解決的問題,但任何人有一個小費,他們是如何把它放在一起?

+0

您需要編寫一個應用程序來查詢表名列表,然後遍歷它們併爲每個表創建一個查詢。它只是Python中的幾行代碼。 –

+0

你需要動態地做到這一點嗎?如果它是固定的表格列表,你可以在一個視圖中合併多個選擇語句。 – Nathan

+0

@Nathan現在是固定的,但我們的團隊無疑將來會添加/刪除表格,我寧願不更新該列表。 – ScottieB

回答

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

希望這有助於循環之後。