本文說明如何在 Databricks SQL 中監視和查詢具體化檢視的重新整理資料。
檢視單一具體化檢視的詳細資料
您可以使用目錄總管來檢視單一實體化檢視表的詳細資料,或以程式設計方式使用 DESCRIBE EXTENDED 作業。 您也可以查詢事件記錄檔,以取得具體化檢視重新整理歷程記錄的詳細資料。
在目錄總管中檢視詳細數據
您可以在「型錄總管」中檢視具現化視圖的資訊。 在「型錄總管」中,您可以查看上次重新整理狀態,以及在 SQL 中建立的任何重新整理排程。 如需在 SQL 中建立排程的詳細資訊,請參閱 CREATE MATERIALIZED VIEW。
「目錄總管」會在右側面板中顯示每個具體化檢視的詳細資料,包括:
- 目前的重新整理狀態 和上次執行時間。 若要查看更新的詳細資訊,包括執行持續時間、任何詳細錯誤,以及 重新整理型別 (包括具體化檢視是完全重新整理還是累加重新整理,以及原因),請按一下 [ 查看重新整理詳細資料]。
- 重新整理排程。 如果具體化檢視已透過 SQL 設定排程,則會顯示排程。 若要更新排程,請使用 ALTER MATERIALIZED VIEW。
- 標籤。 若要新增自訂 標籤,請按一下 新增標籤。 標籤不會自動用於歸因成本,但您可以手動建立查詢,將自訂標籤連結至您的成本。 如需詳細資訊,請參閱 使用自訂標籤將成本歸因至 SQL 倉儲。
具體化檢視的屬性在「目錄總管」中無法使用。 針對這些屬性,或以程序設計方式取得資訊,您可以使用 DESCRIBE EXTENDED 命令。
查看詳細信息 DESCRIBE EXTENDED
您可以使用命令 DESCRIBE EXTENDED ,以程式設計方式檢視具體化檢視的詳細資料。 這包括超越您從「目錄總管」中得到的詳細資訊。 其中包括:
最新完成重新整理的狀態。
重新整理排程。
具體化檢視的欄位。
具體化檢視的刷新類型(「目錄總管」中不可用)。
實體化檢視的數據大小,以總計位元組表示(在目錄總管中不可用)。
具象檢視的儲存位置(在目錄瀏覽器中不可取得)。
某些資訊僅在啟用時包含在結果中:
- 啟用叢集欄位時。
- 是否啟用刪除向量 (僅在
true時顯示)。 - 是否啟用列追蹤(僅在
true時顯示)。
-- As table:
DESCRIBE TABLE EXTENDED sales;
-- As a single JSON object:
DESCRIBE TABLE EXTENDED sales AS JSON;
以程式設計方式查詢事件記錄檔
若要取得具體化檢視重新整理歷程記錄的詳細資料,或重新整理發生時的詳細資料,您可以以程式設計方式查詢事件記錄檔。
身為管線擁有者,您可以建立 檢視 ,以允許其他人查詢管線的事件記錄檔。 下列查詢會建立其他人可用來查詢事件記錄檔的檢視。 此查詢使用 TABLE value 函數來查詢正確的事件日誌表。
CREATE VIEW my_event_log_view AS
SELECT *
FROM event_log(TABLE(<catalog_name>.<schema_name>.<mv_name>));
若要查詢事件記錄檢視,請使用類似下列的查詢。
SELECT *
FROM my_event_log_view
WHERE event_type = "update_progress"
ORDER BY timestamp desc;
若要直接以管線擁有者的身分查詢事件記錄檔,您不需要建立檢視。 您可以使用 TABLE value函數,直接查詢數據,例如以下範例查詢。
SELECT *
FROM event_log(TABLE(<catalog_name>.<schema_name>.<mv_name>))
WHERE event_type = "update_progress"
ORDER BY timestamp desc;
如需使用事件記錄檔的範例查詢完整清單,請參閱 基本查詢範例。
監控具現化視圖執行
您可以使用作業 & 管線頁面、查詢歷程記錄頁面,或透過程式碼查詢事件記錄檔來監視工作區內的管線運行。
在 UI 中檢視所有實體化檢視執行
如果您使用 工作與數據管線 頁面來監視您工作區中不同協作用作業的狀態,您也可以追蹤在那裡建立的所有具體化視圖和流處理資料表。 在 Databricks SQL 中建立的每個具體化檢視都有支援它的管線。 若要查看您有權存取的所有具體化檢視和串流資料表:
- 按一下
工作區左側的 [作業和管線] 按鈕。
- 按一下 [管線] 切換,將您的檢視篩選為僅限管線。
- 按兩下 [管線類型] 按鈕,然後選取 [MV/ST ] 以篩選為僅由 Databricks SQL 建立的管線。
- 按一下 [ 我可存取 ] 篩選器,以顯示您有權存取的所有管線。
您將能夠看到在整個組織中建立的所有具現化視圖和流式資料表,包括最近執行狀態的摘要。 按一下管線的名稱會開啟管線監視詳細資料頁面以取得詳細資訊。 若要深入瞭解管線監控詳細資料頁面,請參閱 疑難排解重新整理失敗問題。
使用查詢歷程記錄檢視運行記錄
如果您對 [查詢歷程記錄] 索引標籤較為熟悉,您也可以利用此功能檢視所有您有至少 CAN VIEW 存取權限的執行 SQL 倉儲的查詢的過往記錄。 您可以使用查詢歷程記錄頁面來存取查詢詳細資料和查詢設定檔,以協助您識別用來執行串流資料表更新的管線中效能不佳的查詢和瓶頸。 如需查詢歷程記錄和查詢配置檔可用資訊類型的概觀,請參閱 查詢歷程記錄 和 查詢配置檔。
這很重要
這項功能目前處於 公開預覽版。 工作區管理員可以從 「預覽 」頁面控制對此功能的存取。 請參閱 管理 Azure Databricks 預覽。
與具體化檢視相關的所有語句都會出現在查詢記錄中。 您可以使用 [語句 ] 下拉式篩選來選取任何命令,並檢查相關的查詢。 所有 CREATE 語句後面都跟著一個在管線上以異步方式執行的 REFRESH 語句。 這些 REFRESH 語句通常包含詳細的查詢計劃,以提供優化效能的見解。
若要存取 REFRESH 查詢歷程記錄 UI 中的語句,請使用下列步驟:
- 按一下
,在左側邊欄中查詢歷史記錄。
- 在 [REFRESH] 下拉式篩選中選取 [] 複選框。
- 按兩下查詢語句的名稱,即可檢視摘要詳細數據,例如查詢的持續時間和匯總計量。
- 按兩下 [ 查看查詢設定檔 ] 以開啟查詢設定檔。 如需巡覽查詢配置檔的詳細資訊,請參閱 查詢配置檔。
- 或者,使用 [ 查詢來源 ] 區段中的鏈接來開啟相關的查詢或管線。
疑難排解資料刷新失敗
您可以透過查看 作業和管線 清單,尋找實體化檢視或串流資料表的失敗更新。 若要針對失敗的更新進行疑難排解,請使用管線監視詳細資料頁面或事件記錄檔。
若要針對您認為應該是增量的完整重新整理進行疑難排解,請先檢查您是否已啟用任何來源 Delta 表的列追蹤。 如需有關增量重整的其他詳細資訊,請參閱 對具現化檢視增量重整的支援。
您可以從管線監視頁面取得其他詳細資料,或以程式設計方式查詢事件記錄檔。
使用管線監控頁面
若要取得有關失敗之具體化檢視 (或串流資料表) 的詳細資訊,您可以使用管線監視頁面來偵錯問題。 每個具體化檢視都有一個管線支援它。 管線監控頁面包含資訊,例如:
- 上次執行的狀態和執行歷程記錄。
- 上次執行持續時間。
- 具象化視圖是完全更新還是增量更新。 如需有關使實體化檢視表能夠增量更新的詳細資訊,請參閱支援實體化檢視表增量更新。
- 事件記錄檔,以進行更詳細的偵錯。 如果您的具體化檢視無法更新或有其他問題,請按一下 問題面板 以更詳細地檢視記錄。
若要疑難排解具現化視圖:
- 在您的工作區中,按一下
左側導覽列上的 [作業與管線] 按鈕。
- 按一下清單中的管線名稱。
- 如果更新無法執行,UI 會在底部面板中顯示錯誤 (或錯誤清單)。
- 按一下按鈕以 檢視記錄, 或按一下 問題面板 以更詳細地檢視錯誤。
- 這會開啟事件記錄檔 UI。 每個錯誤都有高階訊息和摘要,以及包含更多詳細資訊的 JSON 索引標籤。 若要修正 Databricks Assistant 的問題,請按兩下 [診斷錯誤]。
如需管道監控頁面的詳細資訊,請參閱 這裡。
查詢具體化檢視的重新整理歷程記錄
事件記錄檔可用於設定儀表板以監視整個工作區的更新狀態或持續時間,或者如果您偏好程式設計監視而不是使用 UI。 使用 Databricks SQL 建立的具體化檢視不支援將事件記錄檔儲存至中繼存放區,因此只有具體化檢視的擁有者可以直接查詢事件記錄檔。
若要檢視實體化檢視REFRESH上的作業狀態,包括目前和過去的刷新,請查詢管線事件記錄檔:
SELECT *
FROM event_log(TABLE(<fully-qualified-table-name>))
WHERE event_type = "update_progress"
ORDER BY timestamp desc;
將 <fully-qualified-table-name> 替換為實體化檢視表的完整名稱,包括目錄和模式。 如果您不是管線擁有者,您可能需要先建立檢視來查詢事件記錄檔。 請參閱 以程式設計方式查詢事件記錄檔。
查詢實體化檢視的刷新類型
某些查詢可以逐步更新。 如果無法執行累加式重新整理,則會改為執行完整重新整理。
若要查看具體化檢視的重新整理類型,請查詢事件記錄檔:
SELECT timestamp, message
FROM event_log(TABLE(my_catalog.my_schema.sales))
WHERE event_type = 'planning_information'
ORDER BY timestamp desc;
這個指令的範例輸出:
-
- 時間戳記
- 訊息
-
2025-03-21T22:23:16.497+00:00Flow 'sales' has been planned in :re[LDP] to be executed as ROW_BASED.
使用自訂標籤將成本歸因至 SQL 倉儲
標籤不會自動附加至帳單記錄,但您可以在查詢中手動將其聯結至帳單資訊。
使用 Catalog Explorer 將標籤新增至每個具體化檢視表(或串流表格)之後,您可以透過聯結 table_tags 和 billing 系統表格來監控具體化檢視表的成本。 這是範例查詢,可擷取使用 Databricks SQL 建立之所有具體化檢視和串流資料表的計費記錄,並附加資料表層級標籤:
SELECT
u.*,
tag_info.tags
FROM
system.billing.usage u
LEFT JOIN (
SELECT
t.catalog_name,
t.schema_name,
t.table_name,
collect_list(named_struct('tag_name', t.tag_name, 'tag_value', t.tag_value)) AS tags
FROM
main.information_schema.table_tags t
GROUP BY
t.catalog_name,
t.schema_name,
t.table_name
) tag_info
ON tag_info.catalog_name = u.usage_metadata.uc_table_catalog
AND tag_info.schema_name = u.usage_metadata.uc_table_schema
AND tag_info.table_name = u.usage_metadata.uc_table_name
WHERE usage_metadata.uc_table_name is not null;
您可以改用相同的想法來聯結資料表中的 column_tags 資料行標籤。