WeData Data Quality Anomaly Detection
Skill 概述
本 skill 覆盖 DataQualityService 中智能异常检测(Schema Anomaly)相关的 6 个对外 API。异常检测是与"质量任务"、"Profiling"并列的能力:基于历史基线自动检测新鲜度(freshness) 和完整度(completeness) 异常。
异常检测是 Schema 级开关(不是 Task 级)。开启后该 Schema 下所有表自动接入,每张表针对 freshness / completeness 两个维度独立学习基线,约 7 天后开始检测。
不适用场景
- 质量任务(规则 CRUD / 试运行 / 诊断 / 工作流集成)→
data-quality-task - 数据剖析 Profiling(数据画像 / 分布漂移 / dashboard)→
data-quality-profiling - 通用数据资产检索 →
knowledge - 数据模型/指标定义 →
semantic-manage
必需输入
- 用户意图:自然语言(至少一项)
- 写操作:必须有用户明确触发指令,不得由 LLM 主动发起
硬性约束
以下规则不可违反、不可跳过、不可降级。
H9 Schema 异常检测关闭需双确认
DisableSchemaAnomaly 必须同时满足:
- 请求参数
Confirmed: true - 用户原文回复包含**"确认关闭 {catalog}.{schema}"**字样
正确处理(5 步):
GetSchemaAnomalyConfig拉摘要(catalog / schema / Status / ResourceId / LastEnabledAt)- 高亮影响(模板见 G.2 步骤 2)
- 要求用户原文回复**"确认关闭 {catalog}.{schema}"**(必须含 catalog.schema 字符串)
- 校验通过 → 调
wedatacli schema-anomaly disable --catalog <c> --schema <s>;不通过 → 重新要求完整回复 - 汇报结果(
ClosedAt时间戳)
反模式:
- 用户只回"确认" → 不通过,重新要求带 catalog.schema
- 不传
Confirmed=true→ 后端拒绝 - AI 主动建议"是否需要关闭" → 必须用户显式触发
全局安全约束
ResourceId默认禁止索要/弹出选择:异常检测由系统后台周期扫描,开启时不需要用户指定计算资源——绝不在开启流程中弹出计算资源选择列表;仅当用户主动要求"用某资源跑异常检测"才走wedatacli get compute-resources- 开启前必须用
wedatacli get schema --catalog <c> --schema <s>校验 catalog.schema 存在(G.1 步骤 1,强制前置) - 学习期主动告知(避免用户误以为"开启了但没异常 = 系统坏了")
- 不得编造
AnomalyId/Description - 不得讲"异常规则"概念(系统自动学习,不存在用户可写的规则)
不提供的能力(强制告知)
- 手动恢复异常(
ResolveAnomalyResult):白名单已排除。用户问"如何手动恢复" → 告知"系统会基于后续扫描自动恢复,无需手动;如有特殊需求联系平台" - 表级单独开关:异常检测是 Schema 级开关,不能为某张表单独开/关,AI 不要承诺
- 修改基线:基线由系统学习产生,用户不能修改
自检口诀:Schema 异常关闭要带 catalog.schema。
停止条件
| 条件 | 处理 |
|---|---|
wedatacli get schema 返回 schema 不存在 / 报错 |
告知「{catalog}.{schema} 不存在,请核对」,禁止继续调 enable |
GetSchemaAnomalyConfig 返回 Status=disabled 且用户要关闭 |
告知"已是关闭状态,无需重复操作",结束 |
| 用户要为单张表开/关异常检测 | 告知"异常检测是 Schema 级开关,不支持表级单独开关",结束 |
| 用户要修改基线 | 告知"基线由系统自动学习产生,不支持手动修改",结束 |
| 用户要手动恢复异常 | 告知"系统会基于后续扫描自动恢复,无需手动",结束 |
| 用户说"质量任务/规则/试运行" | 路由到 data-quality-task,本 skill 不处理 |
| 用户说"Profiling/数据画像/dashboard/监控效果" | 路由到 data-quality-profiling,本 skill 不处理 |
意图路由(第一步 MUST)
| 意图类别 | 触发词 | 工作流 |
|---|---|---|
| G.1 开启 | "给 xxx 库开异常检测 / 智能异常监控 / 开启异常检测" | G.1 开启 |
| G.2 关闭 | "关掉异常检测 / 不要异常监控了 / 关闭异常检测" | G.2 关闭 |
| G.3 表详情 | "这张表的异常检测状态 / 看 schema 配置 / 用的什么资源" | G.3 查看 |
| G.4 异常列表 | "有哪些异常 / 学习中的表 / 看异常列表 / 异常结果" | G.4 列表 |
与质量任务 / Profiling 不混淆:
- Anomaly 不是 Task 的子能力:开启 Schema 异常检测不会自动创建质量任务
- Anomaly 没有用户可写的规则 YAML:异常由系统基于历史基线自动判定
工作流 G.1:开启 Schema 异常检测(写)
异常检测由系统后台周期扫描,开启时绝不弹出/索要计算资源选择。
- 校验 schema 存在:
wedatacli get schema --catalog <c> --schema <s>,不存在则告知并终止 - 确认:展示 catalog + schema → 用户回复"确认"(不弹计算资源)
- 调用:
wedatacli schema-anomaly enable --catalog <c> --schema <s> - 结果告知:成功后主动说明学习期约 7 天、学习中暂不产出异常、完成后自动检测
工作流 G.2:关闭 Schema 异常检测(H9 强制)
基线和 open 异常保留,但停止检测。按 H9 执行双确认 5 步。
GetSchemaAnomalyConfig确认当前状态(Status=disabled→ 告知已关闭,结束)- 告知影响:所有表检测停止、open 异常保留、基线保留
- 要求用户回复**「确认关闭 {catalog}.{schema}」**
- 校验通过 →
wedatacli schema-anomaly disable --catalog <c> --schema <s> - 汇报
ClosedAt
工作流 G.3:表详情查看(只读)
- 表级状态(含异常检测维度信息):
wedatacli quality-task diagnose --catalog <c> --schema <s> --table <t>(diagnose 内部会调用GetTableAnomalyInheritStatus,返回异常检测状态和各维度基线信息) - Schema 配置:
wedatacli GetSchemaAnomalyConfig '{"CatalogName":"<c>","SchemaName":"<s>"}'(旧接口格式)
输出时主动告知 BaselineState:learning(学习中)/ ready(正常检测)/ paused(已关闭)
工作流 G.4:异常结果列表(只读)
用户意图:"有哪些异常 / 学习中的表 / 看异常列表"
CLI 命令:wedatacli schema-anomaly list_results(完整参数见 api_reference.md)
调用要点:
- 默认查
open状态(用户问"有哪些异常"时不传--status) - 用户问"恢复历史 / 已修复的异常" → 传
--status resolved - 响应中包含
LearningCount,必须输出
输出格式:
## 异常检测结果
共 **{TotalCount}** 条 open 异常,另有 **{LearningCount}** 张表正在学习基线(暂不产出异常)。
| 表 | 维度 | 严重程度 | 描述 | 实际值 | 期望值 | 首次发现 | 命中次数 |
| --- | --- | --- | --- | --- | --- | --- | --- |
| hive_catalog.ods.orders | freshness | critical | {Description} | {ActualValue} | [{LowerBound}, {UpperBound}] | {DetectedAt} | {OccurrenceCount} |
严重程度图标约定:
critical →、warning →。
参考文件索引
- 领域规范(实体模型 / 状态机 / 枚举)
- API 接口说明(6 API CLI 调用格式)