建立数据仓库时要考虑的主要问题

漫谈数据仓库


        BI(商业智能)的应用与实施,数据仓库技术是核心的技术,数据仓库技术包括两方面:一是平台技术,即数据库与ETL的技术平台,纯技术的问题,我们暂且不表;二是应用实施技术,即如何根据客户的需求来构建数据仓库。在此,根据本人的一些项目与产品经验,来与大家探讨一下建立数据仓库时主要考虑的几个问题。
        先回答一个问题:为什么要建立数据仓库呢?多数BI平台/工具厂商在销售时,会更多地强调前端展示有多漂亮,如关键指标的仪表盘或红绿灯;任意维度的钻取功能等等,却避而不谈这些数据如何得到?客户也天真地认为,这些数据就放在自己的业务系统(如财务系统/ERP系统/CRM系统)中,得到自然不成问题。
        其实,客户的理解也没有问题,只是,要得到分析模型的最终数据,其实是需要一个技术处理过程的,这个过程,就是数据仓库的建立过程。对于BI厂商来说,自然不愿意将这个问题描述地太复杂。不过,这个复杂的问题始终是逃避不了的,于是,就有了两种结果:一种是被迫投入大量的实施来实现近乎完美的分析模型;一种则是草率实施,仅仅实现了二维的报表与简单的指标分析。
        为什么建立数据仓库就那么困难呢?个人以为,建立数据仓库说难是难,说不难却也真不难。其难在数据仓库是分析模型与原始业务数据的桥梁,这就需要建立数据仓库的人既要了解管理层面的分析模型,又要了解业务系统的数据结构与运作流程。这样的人去哪里找?多数情况下,企业的业务部门领导懂模型,业务部门的骨干懂业务系统的具体运作,IT部门的人懂数据库及开发技术,能做到1+1+1=1吗?这么一个简单的算式,在BI实施中,通常变成了1+1+1=0!那如果再加一个实施顾问呢?如果是一个非常有经验的实施顾问,则有可能会变成1+1+1+1=0.5,也仅仅是一半的成功!
那什么情况下不难呢?简单,那就是数据仓库已经有现成的了!呵,看到这里不要认为我是在作弄大家,对于商品化的ERP系统,是可以做到的。只是,今天,我们还是假设数据仓库是需要另外创建的情况下,来看看如何做,就会变得不难。
如果我们再仔细分析一下为什么难,就容易得到答案了。为什么四个人的努力还无法变成1呢?根本的原因在于沟通!每个角色描述出来的语言都很难与另外的角色进行很好的沟通,造成了领导想:这帮人怎么回事,一个简单的数据都拿不出来?IT人员在想,领导说句话容易,我们累得半死不说,还根本就办不到;业务人员在想,和IT人员沟通真困难,这么简单的业务逻辑都不明白;实施顾问在想,大家沟通起来怎么这么难,我什么时候才能验收项目,收到款,拿到提成呀!
这个问题有办法解决吗?乍一看,是没有办法解决的,而实际上,办法总是比问题多!
有的时候,解决问题的有效方法是转换问题——即别把问题当问题。如果我们花大力气去解决这个沟通上的问题,就会走进死胡同。我们不妨再分析一下,不成功的原因究竟是什么?
再想想会发现,因为我们认为实施是一次性的,我们认为必须在一次实施的情况下达到我们所有想要结果——自然也就容易不成功了——为什么一定要一次性达到目标呢?
原因会有很多,其中一个重要的原因应该是:请实施顾问是要花钱的!为什么要请呢?为什么不自己学会呢?信息化的实施,是没有终点的,它是一个持续优化的过程,BI的实施,尤其如此。随着业务系统的深入应用,流程会发生变化;随着管理的侧重点不同,领导关注的数据也会不同。这都需要重新修改数据仓库与分析模型,所以,对于企业本身,有一个掌握数据仓库建立技术的团队是非常需要的。
既然我们认为成功是逐步实现的,同时,我们也认为自己掌握数据仓库建立技术是最佳的解决方法,那么,接下来的话题就是,我们自己在创建数据仓库时,有哪些问题是需要先考虑清楚再动手的,避免走弯路。在这里,我们不一定给出解决方法,但有的时候,知道问题的存在比解决问题本身更重要,不是吗?
关键词一:时间维度
时间维度虽是数据仓库中的最核心的维度之一,但表面上来看,仅是日期而已,是非常简单的。很容易忽略一个很常见的问题:对于企业来说,通常会有两种时间:一种是自然日历时间,另一种则是财务使用的会计时间。有很多企业,因为上市的原因,采取某个4月1日至第二年3月31日来定义财年,或因为历史的习惯,每个月从26号到次月的25日为会计期间。在操作中,业务部门肯定是按自然时间来录入与查询信息,而财务部门则按照会计时间来进行记账与出报表,在这种情况下,就需要建立一种规则,来识别自然时间与会计时间的对应关系。
关键词二:事实表清理
对于分析模型来说,也许仅仅是业务系统中的某几个数据,也许需要大量的重新计算才能得到,这时,就需要对事实表进行清理。将以下思路理清楚了,就很容易做到:要分析什么?从哪取数?数与数之间的关联什么?数与数之间的计算公式是什么?要保留哪几个维度?
对于以客户服务为主的企业,会非常关注利润贡献率最高的客户,如果想在一个模型中分析每个客户的收入/成本/利润情况,怎么办?可以通过财务的总账得到这些数据吗?一般情况下,得不到,为什么呢?因为很少有财务会做账做得这么细:记录每个客户的收入与成本费用。那我们只有想办法从业务系统中找数据了。在CRM系统中,存贮了每个客户相关的所有业务数据,如订单,如收款单,如服务单等,我们可以将订单与服务单合并,并按不同的服务内容来计算服务成本,并最终得出这个客户的毛利润。这样实现,不需要通过财务部门。
关键词三:增量更新
数据仓库的创建不是一次完成的,它必然要根据业务系统数据的更新而更新。如何实现增量更新?这是建立数据仓库时最大的技术难点。增量更新意味着它必须识别哪些数据发生过变化?如增加/修改了哪些客户资料?增加/修改了哪些订单?

作者: 奥威软件   发布时间: 2010-08-28

原创支持一下

作者: laou2008   发布时间: 2010-08-29