監視差異即時資料表管線
本文說明如何使用 Delta Live Tables 管線的內建監視和可觀察性功能,包括數據歷程記錄、更新歷程記錄和數據質量報告。
您可以透過管線詳細資料UI手動檢閱大部分的監視數據。 查詢事件記錄檔元數據可更輕鬆地完成某些工作。 請參閱 什麼是 Delta Live Tables 事件記錄檔?。
UI 中有哪些管線詳細數據可供使用?
管線圖形會在管線更新成功后立即顯示。 箭頭代表管線中數據集之間的相依性。 根據預設,管線詳細數據頁面會顯示數據表的最新更新,但您可以從下拉功能表中選取較舊的更新。
顯示的詳細數據包括管線標識碼、來源連結庫、計算成本、產品版本,以及針對管線設定的通道。
若要查看資料集的表格式檢視,請按兩下 [清單] 索引標籤。[清單] 檢視可讓您在管線中看到管線中以數據列表示的所有數據集,而且當您的管線 DAG 太大而無法以圖形檢視可視化時很有用。 您可以使用多個篩選來控制數據表中顯示的數據集,例如數據集名稱、類型和狀態。 若要切換回 DAG 視覺效果,請按兩下 [ 圖形]。
執行 身分 使用者是管線擁有者,而管線更新會以此用戶的許可權執行。 若要變更 run as
使用者,請按兩下 [ 許可權 ] 並變更管線擁有者。
如何檢視數據集詳細數據?
按兩下管線圖形或資料集清單中的數據集,會顯示資料集的詳細資料。 詳細數據報括數據集架構、數據品質計量,以及定義數據集的原始碼連結。
檢視更新歷程記錄
若要檢視管線更新的歷程記錄和狀態,請單擊頂端列中的 [更新歷程記錄] 下拉功能表。
若要檢視更新的圖形、詳細數據和事件,請在下拉功能表中選取更新。 若要返回最新的更新,請按兩下 [ 顯示最新的更新]。
取得管線事件的通知
若要接收管線事件的即時通知,例如管線更新成功完成或管線更新失敗,請在建立或編輯管線時,新增管線事件的電子郵件通知。
什麼是 Delta Live Tables 事件記錄檔?
差異即時資料表事件記錄檔包含與管線相關的所有資訊,包括稽核記錄、資料品質檢查、管線進度和資料譜系。 您可以使用事件記錄檔來追蹤、了解及監視資料管線的狀態。
您可以在差異即時資料表使用者介面、差異即時資料表 API 中檢視事件記錄檔項目,或直接查詢事件記錄檔。 本節著重於直接查詢事件記錄檔。
您也可以定義自定義動作,以在記錄事件時執行,例如傳送具有事件攔截的警示。
事件記錄檔架構
下表描述事件記錄檔架構。 其中有些欄位包含 JSON 數據,需要剖析才能執行某些查詢,例如 details
欄位。 Azure Databricks 支援 :
運算符來剖析 JSON 字段。 請參閱 : (冒號) 運算子。
欄位 | 描述 |
---|---|
id |
事件記錄檔記錄的唯一標識符。 |
sequence |
JSON 檔,其中包含用來識別和排序事件的元數據。 |
origin |
JSON 檔,包含事件來源的元數據,例如雲端提供者、雲端提供者區域、、 或 ,以顯示管線的建立位置,或 DBSQL WORKSPACE 。pipeline_type pipeline_id user_id |
timestamp |
記錄事件的時間。 |
message |
描述事件的人類可讀取訊息。 |
level |
事件類型,例如、INFO 、WARN ERROR 、 或 METRICS 。 |
error |
如果發生錯誤,則描述錯誤的詳細數據。 |
details |
JSON 檔,其中包含事件的結構化詳細數據。 這是用來分析事件的主要欄位。 |
event_type |
事件類型。 |
maturity_level |
事件架構的穩定性。 可能的值是: * STABLE :架構穩定且不會變更。* NULL :架構穩定且不會變更。 如果記錄是在新增欄位之前建立的(2022.37 版)建立,maturity_level 則此值可能是 NULL 。* EVOLVING :架構不穩定且可能會變更。* DEPRECATED :架構已被取代,Delta Live Tables 運行時間可能隨時停止產生此事件。 |
查詢事件記錄檔
事件記錄檔和查詢事件記錄檔的介面位置,取決於您的管線是否已設定為使用Hive中繼存放區或 Unity 目錄。
Hive 中繼存放區
如果您的管線 將數據表發佈至Hive中繼存放區,事件記錄檔會儲存在 /system/events
位置之下 storage
。 例如,如果您已將管線 storage
設定設定為 /Users/username/data
,則事件記錄檔會儲存在 /Users/username/data/system/events
DBFS 的路徑中。
如果您尚未設定此 storage
設定,預設事件記錄檔位置會 /pipelines/<pipeline-id>/system/events
位於 DBFS 中。 例如,如果管線的識別碼是 91de5e48-35ed-11ec-8d3d-0242ac130003
,則儲存位置為 /pipelines/91de5e48-35ed-11ec-8d3d-0242ac130003/system/events
。
您可以建立檢視來簡化事件記錄檔的查詢。 下列範例會建立名為 event_log_raw
的暫存檢視。 本文中包含的範例事件記錄查詢中會使用此檢視:
CREATE OR REPLACE TEMP VIEW event_log_raw AS SELECT * FROM delta.`<event-log-path>`;
將取代 <event-log-path>
為事件記錄檔位置。
管線執行的每個實例稱為 更新。 您通常會想要擷取最新更新的資訊。 執行下列查詢來尋找最新更新的標識碼,並將它儲存在暫存檢視中 latest_update_id
。 本文中包含的範例事件記錄查詢中會使用此檢視:
CREATE OR REPLACE TEMP VIEW latest_update AS SELECT origin.update_id AS id FROM event_log_raw WHERE event_type = 'create_update' ORDER BY timestamp DESC LIMIT 1;
您可以在 Azure Databricks 筆記本或 SQL 編輯器中查詢事件記錄檔。 使用筆記本或 SQL 編輯器來執行範例事件記錄檔查詢。
Unity 目錄
如果您的管線 將數據表發佈至 Unity 目錄,您必須使用 event_log
資料表值函式 (TVF) 來擷取管線的事件記錄檔。 您可以將管線標識碼或數據表名稱傳遞至TVF,以擷取管線的事件記錄檔。 例如,若要擷取標識碼為 04c78631-3dd7-4856-b2a6-7d84e9b2638b
之管線的事件記錄檔記錄:
SELECT * FROM event_log("04c78631-3dd7-4856-b2a6-7d84e9b2638b")
若要擷取建立或擁有數據表 my_catalog.my_schema.table1
之管線的事件記錄檔記錄:
SELECT * FROM event_log(TABLE(my_catalog.my_schema.table1))
若要呼叫TVF,您必須使用共用叢集或 SQL 倉儲。 例如,您可以使用連結至共用叢集的筆記本,或使用連線至 SQL 倉儲的 SQL 編輯器 。
為了簡化管線的查詢事件,管線的擁有者可以透過TVF建立檢視 event_log
。 下列範例會針對管線建立事件記錄檔的檢視。 本文中包含的範例事件記錄查詢中會使用此檢視。
注意
event_log
TVF 只能由管線擁有者呼叫,而且透過TVF建立的event_log
檢視只能由管線擁有者查詢。 檢視無法與其他用戶共用。
CREATE VIEW event_log_raw AS SELECT * FROM event_log("<pipeline-ID>");
將取代 <pipeline-ID>
為 Delta Live Tables 管線的唯一標識碼。 您可以在 Delta Live Tables UI 的 [管線詳細數據 ] 面板中找到識別符。
管線執行的每個實例稱為 更新。 您通常會想要擷取最新更新的資訊。 執行下列查詢來尋找最新更新的標識碼,並將它儲存在暫存檢視中 latest_update_id
。 本文中包含的範例事件記錄查詢中會使用此檢視:
CREATE OR REPLACE TEMP VIEW latest_update AS SELECT origin.update_id AS id FROM event_log_raw WHERE event_type = 'create_update' ORDER BY timestamp DESC LIMIT 1;
從事件記錄檔查詢歷程資訊
包含譜系相關信息的事件具有事件類型 flow_definition
。 物件 details:flow_definition
包含 output_dataset
並 input_datasets
定義圖形中的每個關聯性。
您可以使用下列查詢來擷取輸入和輸出資料集,以查看譜系資訊:
SELECT
details:flow_definition.output_dataset as output_dataset,
details:flow_definition.input_datasets as input_dataset
FROM
event_log_raw,
latest_update
WHERE
event_type = 'flow_definition'
AND
origin.update_id = latest_update.id
output_dataset |
input_datasets |
|
---|---|---|
1 | customers |
null |
2 | sales_orders_raw |
null |
3 | sales_orders_cleaned |
["customers", "sales_orders_raw"] |
4 | sales_order_in_la |
["sales_orders_cleaned"] |
從事件記錄檔查詢數據品質
如果您在管線中定義數據集的預期,數據品質計量會儲存在物件中 details:flow_progress.data_quality.expectations
。 包含資料品質相關資訊的事件具有事件類型 flow_progress
。 下列範例會查詢上次管線更新的數據品質計量:
SELECT
row_expectations.dataset as dataset,
row_expectations.name as expectation,
SUM(row_expectations.passed_records) as passing_records,
SUM(row_expectations.failed_records) as failing_records
FROM
(
SELECT
explode(
from_json(
details :flow_progress :data_quality :expectations,
"array<struct<name: string, dataset: string, passed_records: int, failed_records: int>>"
)
) row_expectations
FROM
event_log_raw,
latest_update
WHERE
event_type = 'flow_progress'
AND origin.update_id = latest_update.id
)
GROUP BY
row_expectations.dataset,
row_expectations.name
dataset |
expectation |
passing_records |
failing_records |
|
---|---|---|---|---|
1 | sales_orders_cleaned |
valid_order_number |
4083 | 0 |
藉由查詢事件記錄檔來監視數據待辦專案
Delta Live Tables 會追蹤物件中待處理專案 details:flow_progress.metrics.backlog_bytes
中的數據量。 包含待辦項目計量的事件具有事件類型 flow_progress
。 下列範例會查詢上次管線更新的待辦專案計量:
SELECT
timestamp,
Double(details :flow_progress.metrics.backlog_bytes) as backlog
FROM
event_log_raw,
latest_update
WHERE
event_type ='flow_progress'
AND
origin.update_id = latest_update.id
注意
根據管線的數據源類型和 Databricks 執行時間版本而定,積存專案計量可能無法使用。
從事件記錄檔監視增強型自動調整事件
事件記錄檔會在管線中啟用增強式自動調整時擷取叢集大小。 包含增強式自動調整資訊的事件具有事件類型 autoscale
。 叢集重設大小要求資訊會儲存在物件中 details:autoscale
。 下列範例會查詢上次管線更新的增強式自動調整叢集重設大小要求:
SELECT
timestamp,
Double(
case
when details :autoscale.status = 'RESIZING' then details :autoscale.requested_num_executors
else null
end
) as starting_num_executors,
Double(
case
when details :autoscale.status = 'SUCCEEDED' then details :autoscale.requested_num_executors
else null
end
) as succeeded_num_executors,
Double(
case
when details :autoscale.status = 'PARTIALLY_SUCCEEDED' then details :autoscale.requested_num_executors
else null
end
) as partially_succeeded_num_executors,
Double(
case
when details :autoscale.status = 'FAILED' then details :autoscale.requested_num_executors
else null
end
) as failed_num_executors
FROM
event_log_raw,
latest_update
WHERE
event_type = 'autoscale'
AND
origin.update_id = latest_update.id
監視計算資源使用率
cluster_resources
事件會針對叢集中的工作位置數目、使用這些工作位置的數量,以及等候排程的工作數目提供計量。
開啟增強型自動調整時, cluster_resources
事件也會包含自動調整演算法的計量,包括 latest_requested_num_executors
和 optimal_num_executors
。 這些事件也會將演算法的狀態顯示為不同的狀態,例如 CLUSTER_AT_DESIRED_SIZE
、 SCALE_UP_IN_PROGRESS_WAITING_FOR_EXECUTORS
和 BLOCKED_FROM_SCALING_DOWN_BY_CONFIGURATION
。
這項資訊可以與自動調整事件一起檢視,以提供增強式自動調整的整體畫面。
下列範例會查詢上次管線更新的工作佇列大小歷程記錄:
SELECT
timestamp,
Double(details :cluster_resources.avg_num_queued_tasks) as queue_size
FROM
event_log_raw,
latest_update
WHERE
event_type = 'cluster_resources'
AND
origin.update_id = latest_update.id
下列範例會查詢上次管線更新的使用率歷程記錄:
SELECT
timestamp,
Double(details :cluster_resources.avg_task_slot_utilization) as utilization
FROM
event_log_raw,
latest_update
WHERE
event_type = 'cluster_resources'
AND
origin.update_id = latest_update.id
下列範例會查詢執行程式計數歷程記錄,以及僅適用於增強式自動調整管線的計量,包括最新要求中演算法所要求的執行程式數目、演算法根據最新計量所建議的最佳執行程式數目,以及自動調整演算法狀態:
SELECT
timestamp,
Double(details :cluster_resources.num_executors) as current_executors,
Double(details :cluster_resources.latest_requested_num_executors) as latest_requested_num_executors,
Double(details :cluster_resources.optimal_num_executors) as optimal_num_executors,
details :cluster_resources.state as autoscaling_state
FROM
event_log_raw,
latest_update
WHERE
event_type = 'cluster_resources'
AND
origin.update_id = latest_update.id
稽核 Delta Live Tables 管線
您可以使用差異即時資料表事件記錄和其他 Azure Databricks 稽核記錄來全面了解差異即時資料表中的資料更新方式。
差異即時資料表會使用管線擁有者的認證來執行更新。 您可以藉由更新管線擁有者來變更所使用的認證。 差異即時資料表會記錄使用者在管線上執行的動作,包括管線建立、設定的編輯,以及觸發更新。
如需 Unity 目錄稽核事件的參考,請參閱 Unity 目錄 事件。
查詢事件記錄檔中的使用者動作
您可以使用事件記錄檔來稽核事件,例如用戶動作。 包含使用者動作相關信息的事件具有事件類型 user_action
。
動作的相關信息會儲存在 user_action
欄位中的物件 details
中。 使用下列查詢來建構使用者事件的稽核記錄。 若要建立 event_log_raw
此查詢中使用的檢視,請參閱 查詢事件記錄檔。
SELECT timestamp, details:user_action:action, details:user_action:user_name FROM event_log_raw WHERE event_type = 'user_action'
timestamp |
action |
user_name |
|
---|---|---|---|
1 | 2021-05-20T19:36:03.517+0000 | START |
user@company.com |
2 | 2021-05-20T19:35:59.913+0000 | CREATE |
user@company.com |
3 | 2021-05-27T00:35:51.971+0000 | START |
user@company.com |
運行時間資訊
您可以檢視管線更新的執行時間資訊,例如更新的 Databricks Runtime 版本:
SELECT details:create_update:runtime_version:dbr_version FROM event_log_raw WHERE event_type = 'create_update'
dbr_version |
|
---|---|
1 | 11.0 |
意見反應
https://aka.ms/ContentUserFeedback。
即將登場:在 2024 年,我們將逐步淘汰 GitHub 問題作為內容的意見反應機制,並將它取代為新的意見反應系統。 如需詳細資訊,請參閱:提交並檢視相關的意見反應