全部產品
Search
文件中心

MaxCompute:增量查詢

更新時間:Jun 19, 2024

Delta Table支援增量寫入和儲存,最重要的一個考慮就是支援增量查詢以及增量計算最佳化,為此,專門設計開發了新的SQL增量查詢文法來支援近即時增量處理鏈路。

增量查詢的處理過程

增量查詢Delta Table 的處理過程如下圖所示。

image.png

  • 當輸入一個SQL語句後,引擎側會解析使用者指定的版本範圍查詢出來所有符合時間範圍內的DeltaFile,進行合并輸出。

  • Clustering和Compaction操作都會產生新的資料檔案,但並沒有增加新的邏輯資料行,只是把原有的記錄進行了組織編排最佳化,因此新產生的資料檔案中的記錄不應該作為新增資料重複輸出,為此,增量查詢做了專門設計最佳化,會剔除掉這些記錄,也比較貼合使用者使用情境。所以增量查詢不會讀取任何BaseFile,只會讀取指定時間區間內的所有DeltaFile,按照指定的策略進行Merge輸出。

上圖以建立一張事務表(src)為例:

  • schema包含一個pk列和一個val列。

  • 左邊圖展示了資料變化過程,t1-t5代表了事務的時間版本,分別執行了5次資料寫入的事務,產生了5個DeltaFile。

  • 在t2和t4時刻分別執行了COMPACTION操作,產生了兩個BaseFile: b1和b2。

  • 在具體的查詢樣本中,例如,begin是t1-1,end是t1,只需讀取t1時間段對應的DeltaFile:d1進行輸出; 如果end是t2,會讀取兩個DeltaFiles:d1和d2;如果begin是t1,end是t2-1,即查詢的時間範圍為(t1, t2),這個時間段是沒有任何增量資料插入的,會返回空行。