一种通用的数据质量保障体系(一)

我们在数据开发和使用中最头疼的问题是什么呢?很多时候往往就是数据质量问题了,对数据开发来说,晚上突然因为数据延迟而被报警电话喊起来解决问题,无疑是让人崩溃的;对BI同学来说,辛辛苦苦写的报告,数据不对基本上这个项目就废了;对于投放同学来说,质量差的数据的表现更是让人生不如死,到底是策略出的问题还是数据出的问题,作为项目负责人在老板那里根本说不清楚,投放费用可是实实在在无法追回了。

数据质量是数据治理中最关键的组成部分,可以说基本上就是决定数据团队(开发、商分、策略、算法)等是否有产出(有价值)的关键了,那么这么重要的东西到底怎么保证呢?以及效果怎么来衡量呢?

 

数据质量保证要考虑哪些方面?

 

一般我们从如下几个方面来衡量数据质量

  1. 完备性:完备性主要是指的数据是否丢失,映射到数据实体——数据表上就是指的关键字段和行数的完备。行数上看,如果某天DAU比前一天减少了99%,那么第一要考虑的就是是否生产系统丢数据了;列数上看,如果丢失了部分字段,意味着丢失了一部分的信息,那么在部分业务的支持能力上肯定是缺失了的。如:百度的用户搜索行为日志中,缺失了用户搜索关键词,这行对于用户需求和兴趣的研究方面,基本就没有价值了。

  2. 准确性:一般是指的已经记录下来的信息是否符合业务场景。数据本身都应该是有一个合理值的,根据业务理解,一般可以按照如下几种类型进行划分:固定格式的字符串或者数字:手机号、身份证号、生日等固定内容的枚举值:例如订单状态(下单、支付、消费、退款等)固定的范围值:例如用户年龄(0-100)、订单交易额(大于0)

    1. 主键唯一性:订单表的订单ID多条重复

    2. 外键关联性:一个事实表中的维度ID在对应的维度表中不存在

    3. 不合理的值:是否为NULL、是否有乱码

  3. 一致性:数据在加工过程中是否是一致的,会不会人为的一些原因导致了数据精度丢失等情况。很多时候随着多层的ETL的进行,在下游的表的相同字段的格式和上游并不一致,导致了一些诸如用户ID被截断等情况。

  4. 及时性:指的是数据要在可用的时效性范围内产出,每一份数据都是在一定的时间内有效的,超过了时效数据的价值会大打折扣。考虑如下场景:例如京东,用户第一天搜索了“大猪蹄子”,如果数据体系供给业务前端“千人千面”系统的反馈数据是T+1的,就可能出现用户在第二天搜索“如何减肥”的时候,系统首页一直推荐的是“大猪蹄子”相关的商品,转化可想而知,所以针对“千人千面”场景,必须做到秒级反馈。再例如:老板早上8点进行公司经营早会,公司的核心报表到早上10点才能产出,影响很可能轻则当天的经营早会就因为数据未就绪而无法进行了,重则老板直接解散数据团队了,所以针对关键经营分析的报表,一般要求凌晨7点前产出前一天的数据。

 

整体的保障体系如下脑图

一种通用的数据质量保障体系(一)

 

篇幅有限,接下来的文章,我们将针对每个模块进行详细讲解,敬请期待~

(转载自微信公众号)