第3章 数据质量维度及度量方法:完整性、准确性、一致性、及时性
3.1 知识结构:四大维度速查表
| 维度 | 定义 | 核心度量指标 | 常见问题 |
|---|---|---|---|
| 完整性 | 数据是否缺失(字段/记录) | 缺失率 = 缺失值数 / 总记录数 | 关键字段空值、表关联丢失 |
| 准确性 | 数据值是否真实反映业务事实 | 错误率 = 异常值数 / 总记录数 | 格式错误、逻辑异常、偏差超限 |
| 一致性 | 不同系统/时间的数据是否统一 | 冲突率 = 不一致记录数 / 总记录数 | 主键冲突、跨系统取值差异 |
| 及时性 | 数据产生到可用的时间延迟 | 延迟时间 = 数据到达时间 - 产生时间 | ETL延迟超SLA、实时数据延迟 |
3.2 面试问答卡片
面试问题1:如何度量数据完整性?请举例说明。
面试官考察点:是否理解完整性不仅包括字段空值,还包括记录级别是否存在业务逻辑缺漏。
回答框架:先给定义 → 说度量指标(缺失率) → 举实际案例 → 提工具或方法 → 解释业务影响。
简短示例回答:完整性主要通过缺失率=缺失值数/总记录数度量。例如订单表支付时间字段缺失率高达20%,导致收入核算误差。我用Doris+SQL统计每日缺失率,设阈值>5%触发告警。同时通过外键校验发现约1.2%的订单缺少用户ID,属记录级不完整。
可能追问:① 缺失率阈值的设置依据?② 如何处理缺失值——填充、删除还是标记?③ 完整性对下游模型的影响如何量化?
面试问题2:请解释数据一致性的常见问题和解决思路。
面试官考察点:能否区分数据一致性维度(跨系统/跨时间/跨字段),是否有解决冲突的经验。
回答框架:列举一致性类型 → 选一种举例 → 度量方法 → 排查流程 → 给出改进方案。
简短示例回答:一致性常发生在多渠道数据合并场景。例如CRM与财务系统的“已支付”状态不一致:CRM标记支付但财务未到账。我取两边最新状态进行比对,冲突率=不一致记录数/总记录数=3.7%。根本原因是财务系统异步回写延迟,通过增加幂等校验和补偿机制解决。
可能追问:① 数据仓库中一致性如何保障(如缓慢变化维的处理)?② 实时数据流与离线数据的一致性如何权衡?③ 怎么设计一致性校验的自动化脚本?
面试问题3:数据及时性怎么监控?怎么设定SLA?
面试官考察点:是否有实时/离线数据延迟监控经验,能否量化SLA。
回答框架:定义延迟时间 → 按数据等级设定SLA → 监控方法 → 异常处理流程。
简短示例回答:及时性用“数据可查时间-业务发生时间”度量。对于核心交易表,我设SLA为T+1凌晨4点前可用,延迟率=超出SLA的任务数/总任务数。使用Azkaban+报警,延迟超30分钟钉钉通知。曾因上游Hive表分区延迟导致下游报表9点才产出,通过增加依赖校验和重跑机制优化到6点前。
可能追问:① 延迟与准确性冲突时如何取舍(如快速上线但有少量错误)?② 实时场景下数据延迟的容忍度是多少?③ 如何避免监控本身成为性能瓶颈?
3.3 项目案例:电商订单数据质量治理平台
| 项目名称 | 电商订单统一质量监控平台 |
| 业务背景 | 公司存在10+业务系统(ERP、OMS、WMS、物流等),订单数据经过多层ETL聚合,上线后频繁出现金额计算不准、订单状态不同步等问题,影响财务对账和运营决策。 |
| 规模指标 | 日处理订单记录数约500万条;源表数30+;质量检查规则240+;告警日均触发20+次。 |
| 技术栈 | Spark Structured Streaming(实时)、Hive/ClickHouse(离线)、Airflow(调度)、Great Expectations(质量规则引擎)、Elasticsearch+Kibana(监控看板)。 |
| 核心难点 | ① 跨系统一致性校验需要统一时间基准(业务时间vs系统时间);② 实时流与离线批处理数据质量规则共用一套配置,避免重复开发;③ 高维度数据下告警收敛——避免同一问题多次重复告警。 |
| 面试高频追问 | ① 你如何设计规则引擎可扩展性?② 如何处理数据质量回溯(历史数据重跑校验)?③ 监控指标本身的质量如何保障(防误报)? |
| 可迁移回答话术 | “我们采用配置化规则,每条规则定义维度、阈值、生效范围。对所有维度统一打分(0-1),低于0.8自动阻断下游任务并生成质量报告。针对不一致问题,通过时间戳+主键+业务字段三元组比对,冲突记录写入异常表由DBA人工确认。这套方法后来迁移到物流、商品等全域数据质量上,覆盖率达95%。” |