管線如何更新?

當管線更新執行時,會刷新管線中定義的實體化檢視與串流資料表,使其結果反映來源資料的當前狀態。 資料集的刷新方式取決於其類型和刷新類型。 關於如何觸發和管理更新,請參見 「執行管線更新」。

刷新類型

預設情況下,管線中每個實體化檢視與串流資料表都會隨著每次更新而重新整理。 下表總結了每種刷新類型的行為:

更新類型 具現化視圖 串流資料表
重新整理(預設值) 更新結果以反映定義查詢的當前結果。 Azure Databricks 會檢視成本,並在效率較高時進行增量更新。 透過串流資料表與流程中定義的邏輯處理新紀錄。
完整重新整理 重新計算結果以反映定義查詢的當前結果。 清除串流資料表的資料、清除流程中的檢查點,並重新處理資料來源中的所有紀錄。
重設串流檢查點 不適用於具體化檢視。 清除流程中的檢查點,但不會清除串流資料表的資料,然後從資料來源中重新處理所有紀錄。

重新整理(預設值)

預設刷新會更新資料集,以反映其定義查詢的當前結果。

串流表本質上是增量式的。 串流資料表重新整理時,只會評估自上次更新後新增的記錄,並使用資料表目前的定義將其附加到資料表中。 舊紀錄不會重新處理,因此不會套用會影響已寫入資料的變更。 換句話說,串流資料表的預設刷新是以較低的時間與資源成本交換資料正確性。 若要重新處理舊資料,請執行完整刷新或重置流程檢查點。

具體化檢視嘗試增量刷新,但在必要時重新處理所有記錄以保持資料表完全準確。 具體化視圖的刷新方式有兩種:

  • 增量刷新 會識別自上次更新以來的變更,並僅合併新資料或修改過的資料。
  • 完整刷新 會執行整個查詢,當增量刷新無法或成本效益不高時,會替換現有資料。

預設情況下,Azure Databricks 會使用成本模型來選擇更具成本效益的方法。 你可以用刷新政策覆蓋這個選擇。 關於增量更新的語意、需求及支援的 SQL,請參見 具體化檢視的增量更新

完整重新整理

完整刷新會根據定義資料集的邏輯重新處理來源資料中的所有紀錄:

  • 對於實體化的視圖,完整刷新會重新計算整個結果。 由於實體化檢視總是回傳與批次查詢相同的結果,預設刷新與完整刷新會產生相同的資料。
  • 對於串流資料表,完整刷新會截斷資料表,清除其流程的串流檢查點,並重新處理來源的每筆紀錄。

因為完整刷新會重新處理所有來源資料,時間和成本會隨著資料大小而增加。 Databricks 建議只有在必要時才執行完整刷新,例如定義或結構變更與現有資料不相容時。 對串流資料表執行完整刷新時,如果來源端已不再保留原始資料(例如 Kafka 主題已超過保留期限),則可能會遺失部分記錄。

關於何時以及如何執行串流資料表的完整刷新,請參見「 串流資料表的完整刷新」。

重設檢查點

重設檢查點只適用於串流表。 它會清除選取流程的串流檢查點,但不會清除已寫入串流表的資料,然後透過這些流程重新處理來源的所有紀錄。 與完整刷新不同,現有的資料表資料會被保留。

當你想重新處理選定流程的串流來源時,例如更改流程邏輯後,且不截斷表格,可以使用此方法。

重設檢查點是透過 Lakeflow pipelines REST API 觸發的。 關於步驟,請參見 開始管線更新以清除選擇性串流流程的檢查點

其他資源