說我們有一個增量發生附加使用自動裝卸機,已添加文件名dataframe,僅此而已。如果我們想減少重複這個數據在一個滾動的窗口中,我們可以做一些類似
合並成日誌使用dedupedLogs日誌。id = dedupedLogs。id和日誌。日期大於當前日期()——當匹配和dedupedLogs間隔7天。日期大於當前日期()——間隔7天然後更新設置*不匹配時,dedupedLogs。日期大於當前日期()——間隔7天然後插入*
dedupedLogs哪裏增量附加的一個子集(7天)與有序哈希關鍵rownum = 1。
這可以在三角洲住表嗎?我嚐試使用apply_changes(),但得到一個錯誤,一個上遊已經改變了。DLT的新算法似乎並沒有接,第二個表,de-duped,應該是一個增量表。
@Jordan狐狸:
如果你得到一個錯誤對上遊的變化,這可能是因為表模式或分區已經改變了。你可以試著運行描述擴展日誌和描述擴展dedupedLogs比較模式和是否存在差異。
是的,它可以執行一個滾動窗口重複數據刪除在三角洲湖使用合並操作。你可以合並增量δ表中的數據與現有的數據和更新或插入記錄基於一個條件。給一個例子如下
合並成日誌使用(選擇id、文件名、日期(SELECT *, ROW_NUMBER() /(分區id按日期順序DESC)從dedupedLogs rownum日期大於當前日期()——間隔7天),rownum = 1), d日誌。id = d。id和日誌。日期大於當前日期()——間隔7天當匹配更新日誌。文件名= d。文件名不匹配時然後插入(id、文件名、日期)值(d。id, d。文件名,d.date);
在這個例子中,dedupedLogs表包含減少數據在過去的7天。我們使用ROW_NUMBER()窗口函數將一個行號分配給每個記錄在相同的一組記錄的id,下令日期列在降序排列。然後我們隻選擇rownum = 1的記錄每個id獲取最新紀錄。合並成語句匹配記錄在日誌記錄在d使用id列,列和過濾器的日期。如果找到一個匹配,在更新日誌文件名列值d。如果沒有匹配,新記錄插入到日誌從d的值。