REFRESH(MATERIALIZED VIEW 或 STREAMING TABLE)

適用於:核取記號為「是」 Databricks SQL

更新串流資料表或具體化檢視的資料。 根據預設,數據會同步重新整理。 您可以執行 DESCRIBE EXTENDED來追蹤重新整理的狀態。

注意

對實體化檢視與串流資料表的建立與刷新操作由無伺服器的 Lakeflow 管線驅動。 您可以使用目錄總管來檢視 UI 中備份管線的詳細數據。 請參閱 什麼是目錄總管?

注意

REFRESH MATERIALIZED VIEW 也適用於物質化度量視圖。 用它手動刷新支持度量視圖的實體化。 關於 度量視角,請參見物質化。

語法

REFRESH { MATERIALIZED VIEW | [ STREAMING ] TABLE } table_name
  [ FULL ] [ WHERE predicate ] [ SYNC | ASYNC ]

你可以在同一指令中指定 、 WHERESYNCASYNC 和 的任何子集FULL

參數

  • table_name

    識別要更新的具體化檢視或串流資料表。 名稱不得包含 時態規格或選項規格。 如果找不到物件,Azure Databricks 就會 引發TABLE_OR_VIEW_NOT_FOUND 錯誤。

  • 滿

    是否要執行完整重新整理。

    • 針對具體化檢視,完整重新整理會處理來源中所有可用的數據。
    • 對於串流數據表,完整重新整理會截斷數據表,並使用串流數據表的最新定義來處理來源中可用的所有數據。

    不建議對不保留整個資料歷程記錄或保留期間較短的來源執行完整重整,例如 Kafka,因為完整重整會截斷現有的資料。 如果資料來源中的資料不再可供使用,您可能無法復原舊資料。

  • WHERE 謂語

    適用於:勾選已標記為的 串流表,並以子 FLOW REPLACE WHERE 句建立

    覆蓋流程的 REPLACE WHERE 謂詞,用於此一次刷新。 刷新只刪除目標中匹配 predicate 的列,並從來源重新計算。 流程定義的謂詞不變,並在下一次刷新時再次套用,因此謂詞覆寫是一次性操作,不會修改資料表定義。 用它來做一次性的回填或修正。 請參閱 REPLACE WHERE 流程以了解獨立串流表

    WHERE 子句僅支援於串流表,而該串流表的流程由 創建 FLOW REPLACE WHERE。 在任何其他串流表或實體化視圖上指定 WHERE 時,會回傳錯誤。

  • SYNC

    是否要執行同步重新整理。 命令會封鎖直到建立具體化檢視或串流數據表,以及初始數據載入完成為止。

    此為預設行為。

  • 異步

    是否要執行非同步刷新,這會啟動 Lakeflow 管線的背景工作。 命令會在數據載入完成之前立即傳回,其中包含支援具體化檢視或串流數據表之管線的連結。 您可以瀏覽連結以檢視重新整理的狀態。

    您必須指定 ASYNC 是否要執行異步重新整理。 如果未指定關鍵詞,則作業會以同步方式執行。

範例

-- Refreshes the materialized view to reflect the latest available data
> REFRESH MATERIALIZED VIEW catalog.schema.view_name;

-- Refreshes the streaming table to process the latest available data
-- The current catalog and schema will be used to qualify the table
> REFRESH STREAMING TABLE st_name;

-- Truncates the table and processes all data from scratch for the streaming table
> REFRESH STREAMING TABLE cat.db.st_name FULL;

-- Overrides the REPLACE WHERE predicate for a single asynchronous refresh.
-- Only rows matching id = 3 are recomputed. The flow's static predicate is unchanged.
> REFRESH STREAMING TABLE rep_st WHERE id = 3 ASYNC;