一个完善的数据仓库必须含有一个完整的数据质量管理系统与元数据管理系统,但是目前国内的数据仓库对数据质量管理这块都不是那么重视,我个人觉得这是一个很大的误区,一个数据仓库如果连数据质量都无法保证,还如何基于做出有效的分析来给决策者做决策的依据?

  从个人理解的角度看,数据质量管理系统应该包含数据质量检测、脏数据的处理与修正这两块。对于数据质量检测这块,又分为物理数据监控与逻辑数据监控。我个人理解的物理数据监控是指纯粹从技术上保证数据的有效性,与业务无关,而逻辑数据监控则是从业务逻辑上,对原始指标以及终产出的业务指标之间的逻辑平衡性监控。通过这些监控,能让底层etl技术人员第一时间的发现数据问题并且解决问题,同时也能根据这些监控提前知道可能产生的结果,为后续产生的业务分析报告作出进一步的修正,从而保证数据仓库的数据的是有效的是能真正反应事实的。对于脏数据的处理与修正这块则是与流程机制有关系,比如产生了某种类型的脏数据第一时间应该如何处理,是reject还是保存起来发给相应的业务人员来手工check然后再回写到数据仓库。

  在数据质量检测这块,对于物理数据监测,通过包含有如下所述的几个方面。其一,数据格式的合法性。比如日期型数据在原系统是字符类型的,进入dw后需要做日期格式的验证,验证是否是有效的日期格式;其二,数据值域的有效性。比如一些维度代码是否有出现维表以外的代码值;其三,空值或者空格的合理性。比如一些重要的不可为空的字段对应映射的源数据字段是否有空值或者空格;其四,主键的有效性。比如对源表业务上已经明确了是主键的字段是否真的;其五,乱码检测。比如数据中是否含有乱码;其六,对于reject的记录的统计。比如是否有超长的数据、是否有不合乎格式的数据出现等;其七,记录数的平衡。比如从源系统抽取了n条记录,终入库的是否也是n条,进入dw之后是否也是n条;

  对于逻辑数据的监控则与业务含义直接挂钩了,主要体现在不同表按照不同的力度描述了相同的指标,终这些指标之间的均衡性的检测,比如网站中的session表含有每个session对应的pv,而path表则含有所有session在每一步的明细,那么逻辑上session表的pv的总和应该与path表的总记录数是相等的,这是一种业务指标上的均衡

  上述说了那么多,其实还有许多可以补充的地方,目前我只想到这些,后续再继续增加,总之,一个完备的数据质量管理系统是数据仓库必不可少的部分,只有数据质量管理系统做好了,才能提高数据仓库数据的可用性,同时也提高数据仓库的数据产生的价值。