大家周末好,我是志明。
今天回忆并记录一下前几天群里看见的某个话题讨论。
1、有位读者问道:“为什么数据质量维度同时包括准确性和一致性,不应该是准确性包括一致性吗,总感觉在中文字面上这两个词有重叠的地方”
聊天截图如下:
2、第一眼看见这个问题,感觉这是一道语文题,有点咬文嚼字的感觉,就是问的“准确性”和“一致性”的各是什么意思嘛?
3、先看看百度的解释:
https://baike.baidu.com/item/%E5%87%86%E7%A1%AE%E6%80%A7/5977032
https://baike.baidu.com/item/%E4%B8%80%E8%87%B4%E6%80%A7/9840083
4、再看看DAMA-DMBOK2的解释:
DAMA-DMBOK2 中文版 P353
DAMA-DMBOK2 中文版 P353
DAMA-DMBOK2 中文版 P354
5、以上文字描述恐怕大部分人看完都是不太理解或一脸懵,特别是DAMA-DMBOK2的解释,毕竟那些文字都是从英文原版书中直译过来的。
6、我的理解:一致性关注点在数据是否合规,即是否负责遵循统一的规范和是否符合逻辑;而准确性则侧重于关注数据的真实性,是否正确,是否存在异常。
7、举个例子吧,比如某通讯录表中数据如下:
一般人看这行数据并没有问题,但是有经验的人可能可以一样发现这行数据存在的问题。
这行数据的“联系电话”为“13800138000”,“一致性”是没问题的,因为符合手机号的格式,也是一个正常的手机号,但是准确性就有问题了,因为众所周知“13800138000”在早些年是中国移动手机充值卡充值电话,后在2015年10月1日起停止服务(http://www.chinamobile.com/aboutus/news/pannounce/gx/index_771_771_detail_29736.html),即便是停止服务了,该号码也应该属于中国移动内部保留号码,不会向公众开放选用,所以数据中这个值是肯定不正确的,符合”一致性”但有违“准确性”。
8、再举个例子,比如某用户信息数据如下:
以上主要关注“联系电话”和“有效期”两个字段值。
直观的可以看出,联系电话是不准确的,且不符合正常电话号的规则,除了满足中国大陆手机号的位数,即“联系电话”违反“一致性”和“准确性”,如果要防止此类脏数据入库,可能上游系统需要优化联系电话的校验规则(如选用更通用的正则表达式),不能仅仅是11位数字就让通过校验。
再看“有效期”,从挨着的“注册日期”字段可以分析出,这里的日期类型存储的值为“yyyyMMdd”格式的字符串,而“有效期”的值“99999999”其实是不符合日期类型取值逻辑的,因为9999年99月99日,年为9999可以,月、日为99明显不符合逻辑,但是这条数据就是对的,因为通过相关文档可以了解,有效期默认就是“99999999”,由此看来,它在此处并不违反“一致性”,因为有约定。
那为什么说“联系电话”符合11位数字又不算符合“一致性”呢,笔者认为,这应该属于一个常识吧。
9、综上,同一场景下,违反一致性的数据一定违反准确性,违反准确性的数据不一定违反一致性,但准确性的可解释性有点复杂,同样的数据,在A看来是正确的,而在B看呢,又是错误的,公说公有理婆说婆有理。
很多时候,数据质量的相关维度需要各个组织内部提前提炼和定义好,做好基于自己组织的合理解释,而后再开展各项活动。
10、以上,不知您看完本文后,能否区分开“准确性”和“一致性”呢,如有不妥或不明之处,欢迎留言指正或讨论。
本文原创首发于公众号:如何理解数据质量中准确性和一致性的区别?答群友问,欢迎探讨。https://mp.weixin.qq.com/s/VsUguRmfiZzcEO-MYVgi0g