数据仓库数据质量管理【转】 - CSDN博客
一个完善的数据仓库必须含有一个完整的 数据质量管理系统与 元数据管理系统,但是目前国内的数据仓库对数据质量管理这块都不是那么重视,我个人觉得这是一个很大的误区,一个数据仓库如果连数据质量都无法保证,还如何基于做出有效的分析来给决策者做决策的依据?
从个人理解的角度看,数据质量管理系统应该包含 数据质量检测、脏数据的处理与修正这两块。对于数据质量检测这块,又分为 物理数据监控与逻辑数据监控。我个人理解的物理数据监控是指纯粹从技术上保证数据的有效性,与业务无关,而逻辑数据监控则是从业务逻辑上,对原始指标以及最终产出的业务指标之间的逻辑平衡性监控。通过这些监控,能让底层ETL技术人员第一时间发现数据问题并且解决问题,同时也能根据这些监控提前知道可能产生的结果,为后续产生的业务分析报告作出进一步的修正,从而保证数据仓库的数据的是有效的是能真正反应事实的。 对于脏数据的处理与修正这块则是与流程机制有关系,比如产生了某种类型的脏数据第一时间应该如何处理,是reject还是保存起来发给相应的业务人员来手工check然后再回写到数据仓库。
在数据质量检测这块,对于 物理数据监测,通过包含有如下所述的几个方面。其一,数据格式的合法性。比如日期型数据在原系统是字符类型的,进入dw后就需要做日期格式的验证,验证是否是有效的日期格式;其二,数据值域的有效性。比如一些维度代码是否有出现维表以外的代码值;其三,空值或者空格的合理性。比如一些重要的不可为空的字段对应映射的源数据字段是否有空值或者空格;其四,主键的有效性。比如对源表业务上已经明确了是主键的字段是否真的唯一;其五,乱码检测。比如数据中是否含有乱码;其六,对于reject的记录的统计。比如是否有超长的数据、是否有不合乎格式的数据出现等;其七,记录数的平衡。比如从源系统抽取了n条记录,最终入库的是否也是n条,进入dw之后是否也是n条;
对于逻辑数据的监控则与业务含义直接挂钩了,主要体现在 不同表按照不同的力度描述了相同的指标, 最终这些指标之间的均衡性的检测,比如网站中的session表含有每个session对应的pv,而path表则含有所有session在每一步的明细,那么逻辑上session表的pv的总和就应该与path表的总记录数是相等的,这就是一种业务指标上的均衡
上述说了那么多,其实还有许多可以补充的地方,目前我只想到这些,后续再继续增加,总之,一个完备的数据质量管理系统是数据仓库必不可少的部分, 只有数据质量管理系统做好了,才能提高数据仓库数据的可用性,同时也提高数据仓库的数据产生的价值.
有些问题还请指点一二:
关于“记录数的平衡”,如果做了去重,关联,过滤这些操作,怎么保证进入仓库的记录数是否正确?
记录数的平衡,我们在项目中是这样做的,对于因为质量问题被丢弃的记录,在后台设置专门的的文件或者数据库表进行存放,在前台提供检索界面, 如果是来源业务系统的问题,反馈,促使来源业务系统进行修正,我们还据此发现业务系统的业务处理逻辑上有小BUG。 其实后线分析系统与业务系统应该是一个双向交互的关系,不仅仅反映在数据质量上,在信息上也是,这样的分析系统才是强大的。