规则引擎是什么
数据质量规则引擎把校验逻辑从代码里抽出来变成配置:一条规则登记目标表、过滤条件、校验类型、阈值、告警级别与责任人,调度平台按表与周期批量执行并汇总结果。这样新增或调整规则只需改配置,不必修改任务代码重新发布;规则、结果与责任人沉淀在同一处,看板与告警才有统一的数据来源。多数开源方案(Griffin、Deequ 加自研配置层、商业数据质量平台)都按这个思路组织。
基本信息
| 规则要素 | 对象、过滤条件、校验类型、阈值、级别、责任人 |
|---|---|
| 常见类型 | 空值、唯一、枚举、范围、行数波动、自定义 SQL |
| 执行方式 | 按表与周期批量调度,可分级与采样 |
| 输出 | 规则结果表加告警与看板 |
| 落地前提 | 统一的结果表结构与责任人字段 |
典型使用场景
- 核心表每日固定稽核:主键唯一、关键字段非空、金额非负
- 新增表上线时批量复制同主题的规则模板,减少重复配置
- 按分区与周期调度:T+1 表每天校验昨日分区,小时表校验最新分区
- 把规则结果写入稽核表,供质量看板统计通过率与覆盖率
- 事故复盘中把新发现的异常固化成规则,防止同类问题复发
规则配置示例
规则配置示例
{
"rule_id": "dq_order_pk_uniq",
"table": "dwd_trade_order_detail_di",
"partition": "dt=2026-10-11",
"type": "uniqueness",
"keys": ["order_id", "item_no"],
"threshold": {"max_fail_rows": 0},
"level": "P1",
"owner": "trade-dw"
}规则类型与判定
| 类型 | 判定方式 | 典型阈值 | 误报风险 |
|---|---|---|---|
| 唯一性 | 按业务键分组计数 | 失败行数为 0 | 低 |
| 完整性 | 空值或空字符串计数 | 关键字段为 0 | 低 |
| 有效性 | 枚举或正则匹配 | 越界行数占比小于千分之一 | 中,源端格式变化易误报 |
| 一致性 | 两表勾稽差异 | 差异率小于千分之五 | 低 |
| 波动性 | 与基线比较 | 偏离区间即告警 | 高,需业务日历修正 |
规则引擎的价值在闭环:每条告警都能追到责任人与处理记录;只把告警发到群里而没有归属,规则再多也不会被处理。
规则全部对全量数据执行时,稽核本身会占用大量计算资源:按重要性分级,波动类规则可先在小分区或采样上跑。
规则要能版本化:阈值调整与规则停用都应有记录,否则某天不再告警时没人说得清是规则被关闭还是数据真的变好了。