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 |
字符串 | 帐户 ID。 | 23e22ba4-87b9-4cc2-9770-d10b894b7118 |
workspace_id |
字符串 | 定义警报的工作空间ID。 | 1234567890123456 |
alert_id |
字符串 | 警报的 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 |
字符串 | 用于运行警报的用户或服务主体的凭证的ID。 | 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 |
字符串 | 帐户 ID。 | 23e22ba4-87b9-4cc2-9770-d10b894b7118 |
workspace_id |
字符串 | 定义警报的工作空间ID。 | 1234567890123456 |
alert_id |
字符串 | 评估警报的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 |
字符串 | 警报评估运行的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';