重要
此功能在 Beta 版中。
本页介绍什么是异常情况检测、它监视的内容以及如何使用它。
重要
异常情况检测使用 默认存储。
什么是异常情况检测?
使用异常情况检测,可以轻松监视架构中所有表的数据质量。 Databricks 自动利用数据智能,通过分析历史模式来评估数据质量,特别是评估每个表的完整性和及时性。 数据所有者有权访问日志记录表,这样他们就可以在整个元存储中快速识别和解决异常。 目录资源管理器或治理中心(个人预览版)中提供了目录、架构和表级别的结果。
要求
- 已启用 Unity Catalog 的工作区。
- 现有用户需要启用无服务器计算。 详细说明,请参阅连接到无服务器计算。
- 若要对架构启用异常情况检测,必须对目录架构具有 MANAGE SCHEMA 或 MANAGE CATALOG 权限。
异常情况检测的工作原理是什么?
Databricks 创建一个后台作业,用于监视表 的新鲜度 和 完整性。 Databricks 使用智能扫描来确定何时扫描表。
智能扫描会自动将扫描频率与表更新节奏保持一致,确保见解保持最新状态,而无需手动计划。 系统优先处理受欢迎程度和下游使用情况确定的高影响表,而对不太重要的表则减少扫描频率,甚至可能完全跳过。
新鲜度 是指最近更新表的方式。 数据质量监视可分析对表的提交历史记录,并生成每表模型来预测下一次提交的时间。 如果提交异常迟到,表将标记为过时。
完整性 是指预期在过去 24 小时内写入表的行数。 数据质量监视可分析历史行计数,并根据此数据预测一系列预期的行数。 如果过去 24 小时内提交的行数小于此范围的下限,则表将标记为不完整。
注释
事件新鲜度基于事件时间列和引入延迟,仅适用于数据质量监视 beta 版本的用户。 在当前版本中,不支持事件的最新性。
异常情况检测 不会 修改它监视的任何表,也不会为填充这些表的任何作业增加开销。
对模式启用异常检测
若要对架构启用异常情况检测,请导航到 Unity 目录中的架构。
在架构页上,单击“ 详细信息 ”选项卡。
单击 “启用” 。 在 “数据质量监视 ”对话框中,单击“ 保存”。
扫描已启动。 Databricks 以相同的更新频率自动扫描每个表,提供最新的见解,而不需要对每个表进行手动配置。 对于在 2025 年 9 月 24 日之前启用的架构,Databricks 针对第一次扫描运行历史数据(“背测试”)的监视器,以检查表的质量,就好像两周前已在架构上启用数据质量监视一样。
扫描完成后,检测到的质量问题会记录在输出系统表中,并在 UI 中填充见解。 有关详细信息,请参阅 查看异常情况检测记录的结果。 可以随时通过单击“数据质量监视”切换旁边的“查看结果”来访问 UI。
禁用异常情况检测
若要禁用异常情况检测,请执行:
单击铅笔图标。
在数据质量监视对话框中,单击切换开关。
重要
禁用异常情况检测时,将删除异常情况检测作业和所有异常情况检测表和信息。 此操作不可撤消。
单击“ 保存”。
数据质量监控用户界面
重要
2025 年 10 月 7 日,Databricks 发布了新版本的数据质量监视。 在该日期或之后用于数据质量监控的架构将具有新的结果用户界面。
有关新 UI 的信息,请参阅 在 UI 中查看数据质量监视结果。
有关旧 UI 的信息,请参阅数据质量仪表板(旧版)。
Databricks 建议为所有现有架构启用新版本。 将不再更新 beta 版本中的旧仪表板。
若要启用新版本,请使用 “数据质量监视 ”开关禁用该功能,然后再次切换以重新启用该功能。
在 UI 中查看数据质量监视结果
在架构上启用数据质量监视后,可以通过单击“ 查看结果”打开结果页。 您还可以从目录资源管理器中访问所有已启用监控的架构的结果。
结果界面包含目录和模式下拉列表。 选择目录时,架构下拉列表中填充了启用了数据质量监视的目录中的架构。
如果对目录具有 “管理 ”或 SELECT “特权”,则可以在目录级别查看事件。 若要查看目录中的所有事件,请从“架构”下拉菜单中选择“所有架构”。
若要查看特定架构的事件,还必须具有该架构的 MANAGE 或 SELECT 特权。 选择架构后,仅显示该架构的事件。
UI 有两个主要部分:
- 摘要部分:显示所选范围的总体数据质量,包括正常表的百分比和当前监视的架构/表的百分比。
- 事件部分:列出所选范围内所有受监视表的事件。 可以根据通过下游影响分析确定的重要表来筛选相关事件。
每个事件记录包括以下详细信息:
- 原因:表是否由于新鲜度或完整性而不健康。
- 自:检测到第一个事件的时间戳。
- 下游使用情况:根据受影响的下游表数和查询的数量,对下游影响(高、 中或 低)进行定性度量。
- 根本原因:有关导致问题的上游作业的信息(有关详细信息,请参阅 查看异常情况检测记录的结果 )。
- 审核: 指向表格质量页面的链接,可以查看历史趋势和可视化分析,以说明为什么检测到异常。
表质量详细信息
使用“表质量详细信息”UI 可以更深入地了解趋势,并了解在架构中检测到特定表的异常的原因。 可以通过多种方式访问此视图:
- 在 “结果”UI (新体验)中,单击事件列表中的“审阅”链接。
- 在 “监视仪表板 ”(旧版 Lakeview 仪表板)中,单击“质量概述”选项卡中的表名称。
- 从 UC 表查看器中,通过访问表页上的 “质量 ”选项卡。
所有选项都会将你带到所选表的同一 “表质量详细信息 ”视图。
在给定表的情况下,UI 会显示每个质量检查的摘要,并在每个评估时点展示预测值和观察值的图表。 图表绘制了过去一周的数据结果。
如果表未通过质量审查,UI 还会显示被识别为根本原因的任何上游作业。
设置警报
若要在输出结果表中配置 Databricks SQL 警报,请参阅 基于异常情况检测设置警报。
局限性
- 异常检测不支持视图。
- 完整性的确定不考虑 null 的占比、零值或 NaN 等指标。
数据质量仪表板(旧版)
注释
数据质量监视仪表板仅适用于旧用户。 在当前版本中,在 UI 中查看数据质量监控结果。
第一个数据质量监测运行会创建一个仪表板,以汇总从日志记录表中得出的结果和趋势。 仪表板会自动填充已扫描架构的见解。 在每个工作区中创建一个仪表板,路径为: /Shared/Databricks Quality Monitoring/Data Quality Monitoring。
质量概述
“ 质量概述 ”选项卡根据最新评估显示架构中表的最新质量状态摘要。
若要开始,必须输入要分析的架构的日志记录表以填充仪表板。
仪表板的顶部部分显示了扫描结果的概述。
在摘要的下方有一个表格,列出了按影响分类的质量事件。 任何确定的根本原因都显示在 root_cause_analysis 列中。
质量事件表下方是一个已识别的静态表,这些静态表在很长一段时间内尚未更新。
为新鲜度和完整性评估设置参数(旧版)
注释
从 2025 年 7 月 21 日起,新客户不支持配置作业参数。 如果需要配置作业设置,请联系 Databricks。
若要编辑控制作业的参数,例如作业的运行频率或记录的结果表的名称,必须在作业页的“ 任务 ”选项卡上编辑作业参数。
以下部分介绍特定设置。 有关如何设置任务参数的信息,请参阅 “配置任务参数”。
计划和通知(旧版)
若要自定义作业的计划或设置通知,请使用作业页上的 “计划和触发器 ”设置。 请参阅 利用计划和触发器自动化作业。
日志表名称(旧版)
若要更改日志记录表的名称,或将表保存在其他架构中,请编辑作业任务参数 logging_table_name 并指定所需的名称。 若要将日志记录表保存在其他架构中,请指定完整的 3 级名称。
自定义 freshness 和 completeness 评估(旧版)
本部分中的所有参数都是可选的。 默认情况下,异常情况检测根据表历史记录的分析确定阈值。
这些参数是任务参数 metric_configs内的字段。 格式为具有以下默认值的 metric_configs JSON 字符串:
[
{
"disable_check": false,
"tables_to_skip": null,
"tables_to_scan": null,
"table_threshold_overrides": null,
"table_latency_threshold_overrides": null,
"static_table_threshold_override": null,
"event_timestamp_col_names": null,
"metric_type": "FreshnessConfig"
},
{
"disable_check": true,
"tables_to_skip": null,
"tables_to_scan": null,
"table_threshold_overrides": null,
"metric_type": "CompletenessConfig"
}
]
以下参数可用于 freshness 和 completeness 的评估。
| 字段名称 | Description | Example |
|---|---|---|
tables_to_scan |
仅扫描指定的表。 | ["table_to_scan", "another_table_to_scan"] |
tables_to_skip |
在扫描期间跳过指定的表。 | ["table_to_skip"] |
disable_check |
扫描未运行。 如果要仅禁用 freshness 扫描或仅禁用 completeness 扫描,请使用此参数。 |
true、false |
以下参数仅适用于 freshness 评估:
| 字段名称 | Description | Example |
|---|---|---|
event_timestamp_col_names |
架构中可能具有的含时间戳列的表的列表。 如果表包含这些列之一,则会在超出此列的最大值时进行标记 Unhealthy 。 使用此参数可能会增加评估时间和成本。 |
["timestamp", "date"] |
table_threshold_overrides |
一个字典,由表名和阈值(以秒为单位)组成,指定自上次表更新以来的最大间隔,然后再将表 Unhealthy标记为 。 |
{"table_0": 86400} |
table_latency_threshold_overrides |
一个字典,由表名和延迟阈值(以秒为单位)组成,指定自表中最后一个时间戳以来的最大时间间隔,然后再将表 Unhealthy标记为 。 |
{"table_1": 3600} |
static_table_threshold_override |
在将表视为静态表(即不再更新的表)之前的时间(以秒为单位)。 | 2592000 |
以下参数仅适用于 completeness 评估:
| 字段名称 | Description | Example |
|---|---|---|
table_threshold_overrides |
包含表名和行数阈值(指定为整数)的字典。 如果前 24 小时内添加到表中的行数小于指定的阈值,则表示该表将被标记 Unhealthy。 |
{"table_0": 1000} |