Important
此系統資料表處於公開預覽狀態。
本頁包含警報系統資料表的資訊,包括每個資料表結構的概要。 使用這些表格直接以 SQL 查詢您的工作區 警示 及其評估歷史,讓您能審計警示定義、分析評估趨勢,並大規模監控警示工作負載。
該 system.alert 結構包含兩個資料表:
-
system.alert.alerts:每個警示的配置,包括定義、排程、評估閾值、訂閱者及生命週期時間戳記。 -
system.alert.alert_evaluation_history:每個警示評估一列,記錄評估狀態、結果值、通知傳遞狀態及錯誤細節。
Requirements
預設情況下,只有同時擁有帳號管理員和元儲存管理員角色的使用者才能存取警報系統資料表。 為了與使用者或群組分享資料表資料,Databricks 建議為每個使用者或群組建立動態檢視。 請參閱建立動態檢視。
警報配置表架構
這 system.alert.alerts 張桌子是一張緩慢變化的尺寸表。 每一列都捕捉警示在某一時刻的設定,因此當一個警示的設定變更時,會有多個列。
資料表路徑:此系統資料表位於 system.alert.alerts。
表格 system.alert.alerts 使用下列架構:
| 欄位名稱 | 資料類型 | Description | 範例 |
|---|---|---|---|
account_id |
字串 | 帳戶的標識碼。 | 23e22ba4-87b9-4cc2-9770-d10b894b7118 |
workspace_id |
字串 | 定義警示的工作區 ID。 | 1234567890123456 |
alert_id |
字串 | 警示的識別碼。 | 2762099691916865 |
display_name |
字串 | 警報的顯示名稱。 | Test Alert |
owned_by |
字串 | 警報擁有者的用戶名稱。 設定為 Unavailable 如果使用者已被刪除。 |
example@databricks.com |
compute |
結構 | 一個結構體,代表與警示所附的運算資源。 其type值為WAREHOUSESERVERLESS_COMPUTE或 。 |
{type: WAREHOUSE,cluster_id: NULL,warehouse_id: 802f6d5283291c0d} |
run_as |
字串 | 使用者或服務主體的識別碼,其憑證用於執行警報。 | 2967555311742259 |
schedule |
結構 | 一個結構體代表警示的排程,包括暫停狀態、cron 排程和時區。 | {pause_status: UNPAUSED,quartz_cron_schedule: 0 0 10 * * ?,timezone_id: UTC} |
evaluation_source |
結構 | 一個結構體,代表查詢結果中的來源欄位,用於評估警示,包括應用於該警示的彙整。 | {aggregation: SUM,display: x,name: x} |
evaluation_comparison_operator |
字串 | 運算子在評估時會將來源值與閾值進行比較。 例如:GREATER_THAN、LESS_THAN和 EQUAL。 |
LESS_THAN |
evaluation_threshold |
結構 | 一個結構體,代表與來源值比較的閾值。 閾值要麼是靜態值,要麼是另一個欄位。 | {value: { double_value: 1.25}} |
evaluation_empty_result_state |
字串 | 當查詢回傳為空結果時,警示所報告的狀態。 可能的值是 OK、TRIGGERED、ERROR。 |
OK |
notify_on_ok |
boolean | 當警報返回 OK 州政府時,是否要通知訂閱者。 |
true |
retrigger_seconds |
int | 警報被觸發後等待的秒數,才能再次觸發。 若 0,警報不會再次觸發。 |
0 |
subscriptions |
陣列 | 接收警報通知的訂閱者陣列。 每位訂閱者皆以使用者電子郵件或通知目的地 ID 識別。 | [{ user_email: example@databricks.com, destination_id: null}] |
change_time |
時間戳記 | 配置最後一次更改的時間。 時區資訊會記錄在數值末尾,並代表 +00:00 UTC。 |
2023-01-01T01:01:01.123+00:00 |
create_time |
時間戳記 | 警報產生的時間。 時區資訊會記錄在數值末尾,並代表 +00:00 UTC。 |
2023-01-01T01:01:01.123+00:00 |
delete_time |
時間戳記 | 警報被永久刪除的時間。 移至垃圾桶的警報不會被記錄。 時區資訊會記錄在數值末尾,並代表 +00:00 UTC。 |
2023-01-01T01:01:01.123+00:00 |
警報評估歷史表架構
該 system.alert.alert_evaluation_history 表格記錄每個警示評估的一列,記錄評估狀態及相關統計資料。
資料表路徑:此系統資料表位於 system.alert.alert_evaluation_history。
表格 system.alert.alert_evaluation_history 使用下列架構:
| 欄位名稱 | 資料類型 | Description | 範例 |
|---|---|---|---|
account_id |
字串 | 帳戶的標識碼。 | 23e22ba4-87b9-4cc2-9770-d10b894b7118 |
workspace_id |
字串 | 定義警示的工作區 ID。 | 1234567890123456 |
alert_id |
字串 | 評估警報的識別碼。 加入 alert_idsystem.alert.alerts。 |
2762099691916865 |
job_id |
字串 | 執行警報的任務ID。 加入 job_idsystem.lakeflow.jobs。
NULL 當警報是依照自己的排程執行,而非作為工作的一部分時。
LEFT JOIN當你對 system.lakeflow.jobs. |
906851285941474 |
task_key |
字串 | 工作中任務的參考鍵。 加入 task_keysystem.lakeflow.job_tasks。
NULL 當警報是依照自己的排程執行,而非作為工作的一部分時。
LEFT JOIN當你對 system.lakeflow.job_tasks. |
evaluate_alert |
alert_run_id |
字串 | 警報評估的識別碼。 | 4104302562320643 |
evaluated_state |
字串 | 警報的評估狀態。 可能的值是 OK、TRIGGERED、ERROR。 |
TRIGGERED |
evaluated_source_result |
結構 | 一個結構體,代表評估所產生的原始值。 | {double_value: 1.25} |
evaluated_threshold_result |
結構 | 一個結構體,代表評估的閾值,或警示設定中設定的靜態值。 | {double_value: 1.25} |
error_code |
字串 | 如果評估失敗且出現錯誤,則使用錯誤代碼。 | INTERNAL_ERROR |
error_message |
字串 | 若評估失敗且出現錯誤,則顯示使用者可見的錯誤訊息。 | Query execution failed |
notified_subscriptions |
陣列 | 這是成功通知的訂閱者陣列。 每位訂閱者皆以使用者電子郵件或通知目的地 ID 識別。 | [{ user_email: example@databricks.com, destination_id: null}] |
failed_subscriptions |
陣列 | 一組通知未發送的訂閱者陣列。 每位訂閱者皆以使用者電子郵件或通知目的地 ID 識別。 | [{ user_email: example@databricks.com, destination_id: null}] |
start_time |
時間戳記 | 評估開始的時間。 時區資訊會記錄在數值末尾,並代表 +00:00 UTC。 |
2023-01-01T01:01:01.123+00:00 |
end_time |
時間戳記 | 評估結束的時間。 時區資訊會記錄在數值末尾,並代表 +00:00 UTC。 |
2023-01-01T01:01:01.123+00:00 |
範例查詢
以下範例查詢展示了分析警示設定與評估歷史的常見方法。 每個查詢都會使用 命名參數標記 來標示警示和工作區 ID,所以執行查詢時會提示你輸入這些值。
查詢最新的評估以獲取警示
此查詢會回傳特定警示的最新配置及其最新的評估結果。
SELECT
c.alert_id,
c.display_name,
c.compute,
c.schedule.quartz_cron_schedule AS schedule,
c.evaluation_comparison_operator AS operator,
c.evaluation_threshold.value.double_value AS threshold,
c.change_time AS config_last_updated,
e.evaluated_state,
e.start_time AS evaluation_time,
e.end_time,
TIMESTAMPDIFF(SECOND, e.start_time, e.end_time) AS eval_duration_seconds
FROM (
SELECT *
FROM system.alert.alerts
WHERE alert_id = :your_alert_id
AND delete_time IS NULL
ORDER BY change_time DESC
LIMIT 1
) c
LEFT JOIN (
SELECT *
FROM system.alert.alert_evaluation_history
WHERE alert_id = :your_alert_id
ORDER BY start_time DESC
LIMIT 1
) e ON TRUE;
找出過去七天內觸發最多的警示
此查詢計算過去七天內,每個警報在工作區觸發的次數。
SELECT
alert_id,
COUNT(*) AS trigger_count_7d
FROM system.alert.alert_evaluation_history
WHERE workspace_id = :your_workspace_id
AND start_time >= CURRENT_DATE() - INTERVAL 7 DAY
AND evaluated_state = 'TRIGGERED'
GROUP BY alert_id
ORDER BY trigger_count_7d DESC;
追蹤警示狀態隨時間的變化
此查詢彙整過去 30 天內,針對特定警示的每個評估狀態的每日計數。 用它來建立一個監控警報可靠性的儀表板。
SELECT
DATE_TRUNC('day', start_time) AS eval_day,
COUNT_IF(evaluated_state = 'OK') AS ok_count,
COUNT_IF(evaluated_state = 'TRIGGERED') AS triggered_count,
COUNT_IF(evaluated_state = 'ERROR') AS error_count
FROM system.alert.alert_evaluation_history
WHERE alert_id = :your_alert_id
AND start_time >= CURRENT_DATE() - INTERVAL 30 DAY
GROUP BY 1
ORDER BY eval_day ASC;
在工作區中列出活躍的警示
此查詢會回傳每個未被刪除且未暫停於工作區的警示的最新設定。
WITH latest AS (
SELECT
*,
ROW_NUMBER() OVER (PARTITION BY alert_id ORDER BY change_time DESC) AS rn
FROM system.alert.alerts
WHERE workspace_id = :your_workspace_id
AND delete_time IS NULL
)
SELECT
alert_id,
display_name,
compute,
schedule.quartz_cron_schedule AS cron_schedule,
schedule.pause_status
FROM latest
WHERE rn = 1
AND schedule.pause_status != 'PAUSED';