数据质量平台
概述
数据质量平台用规则引擎自动校验数据,把质量问题拦截在消费之前:完整性、准确性、一致性、及时性等维度,规则引擎批量执行,看板展示与告警,形成"发现→修复→验证"闭环。本文讲透质量框架、规则引擎与平台架构。
一、数据质量维度
| 维度 | 说明 | 示例 |
|---|---|---|
| 完整性 | 不缺失 | 非空率 |
| 准确性 | 正确 | 值范围 |
| 一致性 | 多源一致 | 对账 |
| 及时性 | 按时 | 产出延迟 |
| 唯一性 | 不重复 | 主键唯一 |
| 有效性 | 合法 | 格式/枚举 |
质量目标:
可信数据
提前发现
快速修复二、Great Expectations
2.1 定位
Python 数据质量框架:
声明式 Expectation
数据文档化2.2 核心概念
| 概念 | 说明 |
|---|---|
| Expectation | 质量期望(规则) |
| Batch | 数据批次 |
| Checkpoint | 校验执行 |
| Data Doc | 质量报告 |
python
from great_expectations.core.expectation_suite import ExpectationSuite
import great_expectations as gx
# 声明期望
suite = ExpectationSuite(name="orders")
suite.add_expectation(
gx.core.ExpectationConfiguration(
expectation_type="expect_column_values_to_not_be_null",
kwargs={"column": "order_id"}
)
)2.3 使用
python
# 校验
checkpoint = gx.checkpoint.SimpleCheckpoint(
name="orders_check",
expectation_suite_name="orders",
)
result = checkpoint.run()| 优势 | 说明 |
|---|---|
| 声明式 | 易读 |
| 文档化 | 数据契约 |
| 生态 | Python |
Expectation 类型:
非空、唯一、范围、格式、类型、统计(均值/分布)三、Deequ
3.1 定位
AWS 开源(Scala/Spark):
大规模数据质量校验
与 Spark 集成3.2 核心概念
Check(检查) + Constraint(约束)
Check 组合多个约束
在 Spark 上执行scala
import com.amazon.deequ.checks.{Check, CheckLevel}
import com.amazon.deequ.VerificationSuite
val check = Check(CheckLevel.Error, "orders check")
.isComplete("order_id") // 完整性
.isUnique("order_id") // 唯一性
.isPositive("amount") // 正值
.isContainedIn("status", Seq("PAID", "UNPAID")) // 枚举
val result = VerificationSuite()
.onData(df)
.addCheck(check)
.run()| 优势 | 说明 |
|---|---|
| 大数据 | Spark 分布式 |
| 分析 | 分布/异常检测 |
| 集成 | 数仓/湖 |
Deequ 特色:
基于统计的异常检测(Suggestion)
数据画像四、规则引擎设计
4.1 规则抽象
规则 = 校验配置:
数据源/表/字段
规则类型
阈值/参数
严重级别| 规则类型 | 示例 |
|---|---|
| 非空 | null 率 < 1% |
| 唯一 | 重复率 = 0 |
| 范围 | 值 ∈ [0, 100] |
| 枚举 | ∈ 合法值 |
| 对账 | 与源一致 |
| 及时 | 延迟 < 2h |
4.2 引擎架构
规则配置 → 校验执行 → 结果评估 → 告警/阻断| 模块 | 职责 |
|---|---|
| 规则管理 | 配置/版本 |
| 执行器 | 批量校验 |
| 评估 | 通过/失败 |
| 动作 | 告警/阻断 |
| 统计 | 结果存储 |
4.3 执行方式
| 方式 | 说明 |
|---|---|
| 离线批 | 任务后校验 |
| 实时 | 流校验 |
| 定时 | 周期校验 |
触发时机:
任务产出后(离线)
写入前(准入)
定时巡检五、质量看板
5.1 指标
| 指标 | 说明 |
|---|---|
| 合格率 | 规则通过率 |
| 失败数 | 问题规则 |
| 影响表 | 受影响数据 |
| 趋势 | 质量变化 |
| 修复率 | 问题闭环 |
5.2 看板内容
按表/规则/团队展示:
今日质量
失败 Top
趋势图
问题状态看板价值:
发现问题
责任到团队
驱动改进六、治理闭环
6.1 流程
发现(校验)→ 告警 → 定位(血缘)
→ 修复(重算)→ 验证 → 复盘| 环节 | 说明 |
|---|---|
| 发现 | 规则校验 |
| 告警 | 通知 Owner |
| 定位 | 血缘溯源 |
| 修复 | 数据修正 |
| 验证 | 复校验 |
| 沉淀 | 规则完善 |
6.2 策略
| 策略 | 说明 |
|---|---|
| 阻断 | 严重问题阻止下游 |
| 预警 | 轻微问题通知 |
| 降级 | 标记不可信 |
质量策略:
关键数据阻断
一般数据预警
可灰度标记七、平台架构
7.1 组件
规则管理 → 校验引擎 → 结果存储 → 看板/告警
元数据联动(表/字段)
血缘联动(定位)| 组件 | 技术 |
|---|---|
| 规则库 | DB/配置 |
| 引擎 | Spark/Deequ/GX |
| 存储 | 结果表 |
| 展示 | 前端看板 |
7.2 集成
与调度集成:任务后触发校验
与平台集成:统一入口
与血缘集成:问题定位八、最佳实践
| 实践 | 说明 |
|---|---|
| 关键表优先 | 核心数据 |
| 规则分级 | 重要度 |
| 阈值合理 | 避免误报 |
| 告警去重 | 防轰炸 |
| 闭环运营 | 修复跟进 |
| 规则沉淀 | 经验复用 |
常见问题速查
| 问题 | 要点 |
|---|---|
| 质量维度 | 完整性/准确/一致/及时 |
| GX vs Deequ | Python vs Spark |
| 规则引擎 | 配置化校验 |
| 看板 | 合格率/趋势 |
| 闭环 | 发现→修复→验证 |
| 准入 | 写入前校验 |