之前很多人都在催我,让我写一些关于数据质量管理的东西,今天就稍微整理一点吧(仅为个人意见,不喜勿喷。欢迎指点交流。)
个人认为呢,数据质量管理(DQC)分为以下几点。
一、表级别的监控
- 可以用同环比之类的进行校验,根据实际业务情况设定告警阈值:
比方说一些公司,工作日的订单和流量就是一般,而到了双休日就会猛增,此时如果仅仅用单纯的固定阈值来进行监控,(如:大于50%)。那对于事实表和数据集市的表(比如用户画像)其实是不妥的,会产生很多“理论上”的告警,而从业务角度,是没有问题的。所以,在一些类似于维度表,或者缓慢渐变维的表,可以使用固定阈值进行监控。而其余的业务表,是不妥的(可以采用数据分析,回归模型等方式,进行预测,设定阈值)。
二、字段级别的监控
-
枚举值的校验:
比如有一张订单表,有一个订单状态字段,叫做order_status:下单状态是10,准备付款是20,扣款成功是30,扣款失败是40,已发货是50,什么的一大堆。但是某一天,生产上多了一个退货的状态,是60,但是从ETL的角度,这是无感知的。但很可能下游表在计算时,并未把这个新增的状态60计算在内,导致下游的指标出错。所以要进行及时监控。 -
特殊值判断:脏数据,或者上游本来手机号是明文,现在MD5加密了,要有感知。
-
范围判断:一般订单金额超级大,类似这种情况
三、全链路的数据监控
-
ETL任务及时排查:
就是在ETL过程中,哪一个任务报错,报错的问题是什么,要把日志取出来。这个ETL如果没有执行完,结果出不来,下游有哪些任务是会受到影响。同时,可以通过电话等形式,通知到负责人或者值班人员,进行ETL脚本排查,任务重跑等。 -
VIP任务保证:
就是一些老板会看的日报,周报,月报。还有各个部门每天有会看的汇总指标,用户画像。要重点进行排查,保证在每天上班前,数据完整,正确地提供。