:
[@more@]我们经常会遇到这样的情况:客户希望我们实施DW/BI,等我们调研完了之后发现问题如下
1:全部有8个国家(A1,A2,A3,A4,A5A,A6,A7,A8),有5中系统(S1,S2,S3,S4,S5),每个国家的每种系统不完全一样。
2:系统是按照业务来划分的,只有销售体系和财务体系是每个地区都可以提供一些基本数据的。而销售和财务数据,每个地方都存在一些差异,这些差异又是允许存在的,而且是一定存在的。
3:未来2-4年内,可能所有地区和系统都会整合进入DW中。
4:企业没有将地区业务系统统一的计划
5:现在迫切需要上销售模块的BI,而韩国需要上HR方面的BI,日本需要上供应链方面的,中国需要HR,供应链还有客户分析等等
6:企业内部,不同国家的同一系统,比如所有国家的销售系统,他们的计算方式或者说处理逻辑不一样,而且对于DWBI而且的维度数据,也不净相同,比如同一产品的描述,或者产品的内型等等
7:很多源系统都是采用的EXCEL的形式或者access的形式。
我们遇到这样的问题,首先是数据如何保证质量,然后是如果以后分部分批的上线DW,该如何操作。
按照我们以前的方式,构架如下
各地区的源系统 --à 统一的ODS ----à 统一的DW à 统一的BI操作
这样的构架,我们对于源系统不规则或者差异很大的情况,就显得比较麻烦,首先我们在整合维度数据的时候是要在ODS中的,但是如果系统逐步的改善和上线的话,这样的操作就显得很麻烦和笨拙
如果我们在source data和ODS间建立一个矫正引擎针对不同数据源的mapping的table和view的话,问题就比较简单了
1:首先我们可以通过这个mapping来维护source的数据和DW中的数据的一致性,同时加强数据的修正机制,讲从source过来的数据,通过这个矫正引擎来清洗和补充数据。这样一来,将来我们在source做了很大的改动的时候,我们只是需要在矫正引擎上做一点点修改,或者改变一下mapping的关系。
2:其次我们可以统一数据规则,比如对于订单号的一些处理,每个国家都不一样,我们可以再加一下标记,比如,在中国的订单号前加CN, 防止发生数据重复
3:在这个矫正引擎上做一些针对source的业务逻辑不一样的进行计算,使得在数据上看到的逻辑关系是一致的,如果实在没有办法统一,可以在相应表中加上type字段,加以区分,这样方便以后进行统一的处理。
在这个数据矫正引擎上,尽量用试图,少用数据存储。