Onedata-2 数据出错了
突然发现仪表盘中的数据为0 ... ... ?
图片来自(极客时间-数据中台实战课)
由结果表顺着向上游排查,查了30分钟之后发现是某个dwd表的解析出了问题,部分脏数据影响了下游,导致没报错,但其实数据写入失败。
一套盘查下来用了半天,业务方也对数据部门感到呵呵。
这是个经典问题,暴露了数据质量不完善:
- 业务方发现时间早于数据部门,客户满意度直线下降;
- 出现问题后,数据部门无法快速定位,排查时间过长;
- 故障没有对应的报警;
常见问题根源:
- 业务源系统变更
- 数据开发BUG (大多数)
- 物理资源不足,任务失败
- 运维故障,基础设施
- Hadoop Bug
提升质量的方法:提前发现问题
- 稽核校验任务
- 根据出表结果,按业务规则,设计校验逻辑,确保数据完整性、一致性和准确性;
- 规则: 数据有无, 数据值落在合理区间;
- 规则未通过,承接报警策略
- 根据出表结果,按业务规则,设计校验逻辑,确保数据完整性、一致性和准确性;
规则设计
规则的分类
完整性, 有无数据
一致性, 两个表当中 A表的a1 a2指标 可计算出B表的b1 b2 即跨表间存在的公式, 一致性依赖。
准确性,数据记录的正确性,如商品类目的格式,IP格式
唯一性,不应产生重复数据的表,出现了重复行。
及时性,数据生产的最晚接受时间 DDL。
规则分级
强规则,弱规则取决于业务上对该表出问题的容忍度。
比如和公司金钱有关的、核心指标有关的,都得设置为强规则(电话+短信+IM+ 邮件,能提醒的都用上)
反之采用弱规则。
如何衡量数据质量
凡事都得量化,才能做到优化。
怎样衡量数据仓库的数据质量,可以采用
🟥 6点30分钟核心报表生产率 (这里6点30分钟是一个虚时间,也可以定为5点30分,取决于业务)
🟦 稽核规则命中率, 不同规则对应的表负责人处理的报警次数,反向指标。
🟩 数据产品SLA, 反向指标。 如果指标超过9点还没产出,示为不可用。 每天之中将可用数据的占比计算出来,取补即为当天可用指标, 如99.9%
数据质量中心(Data Quality Center)
即为这样的定义稽核规则、控制报警、执行任务明细、指标打分和评级
DQC首页是质量大屏,展示当前任务的核心质量指标。 (上面的🟥🟦🟩 三级指标)
一些典型的数据故障
- 协作事故
- 跨部门, 服务端修改了上游数据(换库改表)
- 同部门,集群内调整了运行参数