2、质量规则基础概念:数据质量维度与规则定义
2.1 数据质量四大核心维度
在工程分析平台中,数据质量并非单一指标,而是由多个维度共同刻画。业界通常将数据质量归纳为完整性、准确性、一致性和及时性四个核心维度。理解每个维度的内涵,是定义质量规则的前提。
| 维度 | 定义 | 工程分析平台典型场景 | 违反后果 |
|---|---|---|---|
| 完整性 | 数据记录、字段或属性是否存在缺失 | 传感器上报数据缺少时间戳、设备ID为空 | 无法关联事件序列,分析结果偏差 |
| 准确性 | 数据值是否真实反映客观事实或预期范围 | 温度传感器读数超出物理极限(如-300°C) | 触发误报警,误导运维决策 |
| 一致性 | 同一实体在不同系统或不同时间点的数据是否逻辑自洽 | 设备A在日志中状态为“运行”,在监控库中为“停机” | 数据冲突,根因分析失效 |
| 及时性 | 数据从产生到可被消费的延迟是否满足业务SLA | 实时告警数据延迟超过5分钟 | 错过故障响应窗口,造成生产事故 |
工程提示:在定义质量规则时,建议优先从完整性和准确性入手,这两个维度最容易通过单表或单字段规则捕获异常。一致性和及时性通常需要跨表、跨系统或时间窗口校验,规则复杂度更高。
2.2 数据质量维度关系图
下图展示了四大维度在工程分析平台中的层次关系与数据流向。完整性是基础,准确性是核心,一致性是跨系统协同的保障,及时性是实时场景的生命线。
2.3 质量规则定义与分类
质量规则是将数据质量维度量化为可执行校验逻辑的载体。在工程分析平台中,规则通常按校验粒度和校验时机进行分类。
2.3.1 按校验粒度分类
- 字段级规则:针对单个字段的值域、格式、非空等校验。例如:
device_id IS NOT NULL、temperature BETWEEN -50 AND 150。 - 记录级规则:针对单条记录内多个字段的逻辑关系。例如:
start_time < end_time、status = 'running' AND cpu_usage > 0。 - 表级规则:针对单表内多条记录之间的统计特征。例如:
COUNT(*) > 0、AVG(latency) < 1000。 - 跨表级规则:针对多表之间的外键关联或数据一致性。例如:
alert.device_id IN (device.id)、SUM(order.amount) = SUM(payment.amount)。
2.3.2 按校验时机分类
| 校验时机 | 触发方式 | 适用场景 | 延迟要求 |
|---|---|---|---|
| 实时校验 | 数据写入时触发 | 流式数据、告警、实时监控 | 毫秒~秒级 |
| 准实时校验 | 微批次调度(如每5分钟) | ETL中间表、聚合结果 | 分钟级 |
| 离线校验 | 定时任务(如每日凌晨) | 全量数据对账、历史数据回溯 | 小时~天级 |
规则定义最佳实践:每条质量规则应包含以下元数据:规则ID、所属维度、校验粒度、校验时机、SQL/表达式、预期结果、严重级别(P0/P1/P2)、告警接收人。建议将规则元数据存储在配置中心或规则引擎中,便于统一管理和版本迭代。
2.4 规则分类与维度映射矩阵
将规则分类与四大维度进行映射,有助于快速定位规则归属,避免重复定义。下表展示了常见规则类型与维度的对应关系。
| 规则类型 | 完整性 | 准确性 | 一致性 | 及时性 | 示例 |
|---|---|---|---|---|---|
| 非空校验 | ✓ | field IS NOT NULL |
|||
| 值域校验 | ✓ | value BETWEEN 0 AND 100 |
|||
| 格式校验 | ✓ | REGEXP_LIKE(phone, '^1[3-9]\\d{9}$') |
|||
| 唯一性校验 | ✓ | ✓ | COUNT(DISTINCT id) = COUNT(*) |
||
| 外键关联校验 | ✓ | fk IN (SELECT pk FROM ref_table) |
|||
| 延迟校验 | ✓ | event_time >= NOW() - INTERVAL 5 MINUTE |
|||
| 统计分布校验 | ✓ | AVG(duration) < 3 * STDDEV(duration) |
2.5 规则定义示例(SQL表达式)
以下是在工程分析平台中实际使用的质量规则SQL示例,涵盖四个维度。
-- 完整性:设备上报数据必须包含时间戳
SELECT device_id, COUNT(*) AS total, SUM(CASE WHEN ts IS NULL THEN 1 ELSE 0 END) AS missing_ts
FROM sensor_raw
WHERE dt = '2025-03-01'
GROUP BY device_id
HAVING missing_ts > 0;
-- 准确性:温度值必须在物理范围内
SELECT device_id, ts, temperature
FROM sensor_raw
WHERE temperature < -50 OR temperature > 150;
-- 一致性:告警表中的设备状态必须与设备表一致
SELECT a.alert_id, a.device_id, a.status, d.status AS expected_status
FROM alert a
LEFT JOIN device d ON a.device_id = d.id
WHERE a.status != d.status;
-- 及时性:数据到达时间与事件时间之差超过5分钟
SELECT device_id, event_time, arrival_time,
TIMESTAMPDIFF(MINUTE, event_time, arrival_time) AS delay_min
FROM sensor_stream
HAVING delay_min > 5;
常见陷阱:在定义准确性规则时,不要只依赖单字段值域校验。例如,温度传感器在断电时可能上报0°C,这个值在值域内但实际是无效数据。建议结合变化率校验(如温度变化超过20°C/秒视为异常)或上下文校验(如设备状态为offline时,温度值应被忽略)。
2.6 规则生命周期管理
质量规则不是一次性定义的,需要持续迭代。下图展示了规则从定义到废弃的完整生命周期。
2.7 本章小结
- 数据质量四大维度——完整性、准确性、一致性、及时性——是定义质量规则的基石。
- 规则按校验粒度分为字段级、记录级、表级、跨表级;按校验时机分为实时、准实时、离线。
- 每条规则应包含完整的元数据,并映射到对应的质量维度,避免规则冗余或冲突。
- 规则需要经历定义→测试→上线→监控→废弃的完整生命周期,并通过反馈回路持续优化。