|
indicate的挖掘对数据仓库项目的重要性innovate 我今天看到itpub.net的帖子“浅谈数据仓库”http://www.itpub.net/496965.html 突然想起忘说一个主题:indicate。 就我看到2003年普遍上的移动经营分析项目,要得到客户需要的查询、报表或者其他需求时,往往是用事实表一点一点地算出客户要得指标,然后sum,count后放进前端客户需要看的汇总聚合表。这样做的错误很多书上已经说了,至于为啥有问题,显然客户前端的需求是多变的,他们报表或者其他应用所要的指标是经常被使用的,如果每次都做一个这样的sum,count,系统的资源是被浪费的,而且维护量很大,每次指标调整,每一个汇总程序、相关汇总表们全部要改。 这就是今天突然想到要提一下indicate字段的原因。一般优秀的DW项目,处理客户需要的指标的时候,是在某个维表里加indicate字段,一些复杂的算法,只要有人知道其计算方法,就能加在一个维表一个对应的indicate,所以不要怕维表是动态维,也不要怕业务需要时增加一个新的复杂维表。试想你在DM那边改动那么大,而且每次重新计算是面向事实表的汇总,哪个效率高,哪个可靠性高,哪个扩展性强呢? 这就说到前面提到的conform table了,如何解释conform,就是多个分表聚合到一个事实表,适应各种应用。到DM层后,对于报表和查询的应用需求,就可以通过conform table和相应的维表关联形成一个summurry table,这个时候的维表对应的解释信息都在这个表里,当然indicate的解释信息也在里面,客户要查询具体信息,那不是很爽了么,也许光这点就比花哨的OLAP还有用。当然作为分析,还是要靠报表和OLAP,以及DM,至于这么丰富的信息如何挖掘知识,那是后话,不在此讨论中。 如果诸位从这些分析里在项目实施中得到启发,请给我们回复。 再说一下设计,不仅仅是了解业务后,分了几块数据库,有ODS,有DW,有DM,再data model,然后该怎样选用工具实施,而是从宏观架构设计到细致建模。业务了解清楚后,你可以选择最后汇总来计算各个指标,你也可以选择在仓库的前面的维表里去解决这些问题,你可以很粗鲁地直接将一大块事实表ETL放到DM,然后找数据库优化、code优化等去优化ETL,你可以深入挖掘维表中对该行业有价值的指标,更可以不用分析客户数据中潜在的指标,而是等待客户给你答案。至于经验和教训,就不用多说了,那现在还需要优秀的设计作项目前提么? 刘庆 什么叫做Indicate字段啊?我有个提议,对于此类从国外来的名词,是否能够对应一个中文名词。同样,什么叫Confirm table,最好也能够为之中文命名。不管咱们是否权威,但既然现在国内没有一个统一的叫法,就创造一个呗。 Innovate 传统的KPI大家都知道了,我这里强调的indicator是对一些业务上的解释性标示。在Kimball的life cycle second edition里有一些例子,比如说vacation indicator,就是通过日期date字段,判断某条记录是否是vacation,如果是,那该字段就是Y,不是,就是N。这些,就是我说的业务上的深度挖掘,供客户方便地查询和一些分析使用。 当然,现实中可能是更复杂的indicator,比如客户想要一种客户类型,这种客户必须是集团客户,必须是头衔为经理,而且信用度大于100的,大客户经理也许想对这些集团客户进行特殊照顾,于是想在系统中查寻。那么你可以有个大客户维表,至少含有以上信息,那么根据以上条件,开一个indicator字段,进行判断。之所以我说尽量在维表中定义,我觉得这样更符合中国国情,客户对一些特殊需求的定义往往可能改变的,不同部门的定义也不同,如果你放在事实表进行indicator字段的转换的话,那么对ETL性能是一个挑战。 刘庆 哦,是我将indicator字段理解错了。 (日ID、日描述、节假日描述、月ID、月描述、年中月描述、季度ID、季度描述、年中季描述、年ID、年描述) Innovate 我觉得有的时候不能做重复工作,比如集团用户、欠费用户如果在生产系统已经有一个标志,或者说某个字段已经有描述了,那就不用专门做一个这样的标志了。但是如果生产系统没有,需要DW系统自己转换产生的,可以增加一个标志。 对了,稍微补充一下,我的意思不是你有多个条件组合的就必须有个indicator,没有必要,组合的情况太多了,而且在前端需求也很容易实现,多一个where条件,并不会影响性能。什么情况才需要indicator字段呢?只有需要用程序转换的情况,才能体现其设计优势。就如vacation,或者上中下旬,这些日常定义,但是在生产系统没有的东西,都需要程序判断才能得出的东西,就需要用indicator字段来处理。 变幻莫测 刘庆 20060302 吃饭的时候,对面两个哥们儿在抱怨。"又要修改?需求变了多少次了?" 不是第一次听到这样的抱怨,我也抱怨。不过今天听到以后,第一个反应不是同情,也不是想应该建立需求变更的流程,竟然是幸灾乐祸。"嘿嘿,谁叫你们需求分析没做好来着。" 需求变更的原因当然又很多,作为集成商这边,一般都是埋怨客户没脑子,想一出是一出。后来算是认了,客户得罪不起,他们想怎样就怎样吧,但要留下痕迹,有变更书,到时候好跟他们谈判,看,没有功劳也有苦劳啊。要不就力争将需求规格定义地尽量清楚,不许抵赖。可这都无法阻挡需求变更,企业要将运营放在第一位,IT的支撑只能迎合它,不可能因为纸面文字的约束而削足适履。 好像根本问题是在源头,IT建设的初期就并不明白要解决什么,企业真正的需求是什么。缺乏合适的需求分析人员,只能用某些人来代替了,例如架构师,甚至是程序员。自己就曾经作需求分析,未来还要作。可惭愧的很,将客户心中所想的东西分析出来、表达出来很困难。在时间限制下,通常的结果只能是选择一个模板,照葫芦画瓢地形成一份需求文档,上面列出种种功能、种种分析,却未必是真实的。客户看完,觉得是一份文档,内容大多也不会细看,主要的考虑在于是否准备在上面签字。 如此的需求分析,真是有些让人灰心啊。昨晚,朋友打了一通电话,和人谈联通经营分析的建设,听起来他们公司对这块业务要求严了。成本、盈利、需求、阶段都得有规矩,这可让他犯愁。挂了电话,感叹,"联通经营分析怎么才能做的好呢?"。赶紧安慰他,"能作好的,慢慢来",可怎么慢慢来呢?如果从项目不能盈利,一段时间后,要不公司歇菜,要不部门取消,或是退出这个业务。 Liu annie 已经不作数据仓库好久了。不过既然提到了需求分析,我在这个方面多少有些见解,就多说两句了。 数据仓库项目因为需求分析做得不好,需求变更的事情我实在见的多,也曾经干过力挽狂澜的事情,把一个近乎失败的项目成功完成,靠的,也只是我的需求分析能力,也就比别人多懂了那么一点点的业务知识。 先说,需求分析为什么变更频繁,那自然是在需求分析阶段,需求分析人员没有完整准确地整理出客户对系统的真实需求。如果一个数据仓库项目简单地说,客户说怎么实现,需要怎么去实现,我们帮他们去实现好了,需求分析人员只是简单记录下客户的要求,那就请准备好,客户说怎么修改,就怎么修改吧。这种情况下,客户水平决定了项目水平,实施人员只能被人牵着鼻子走,客户反过来觉得,你们怎么这么差,我虽然说一,但是我的意思其实包含了二,你们自己不理解,还怪我变更频繁,我如何相信你们做出来的东西! 相反,如果需求分析人员非常了解相关的业务知识,跟客户调研需求的时候,既能全面理解客户的意图,又能对其中所包含的问题非常清楚,那么需求分析阶段,其实是良性引导客户需求的阶段,需求分析结束,整个项目的边界、实现功能等方面,都非常清楚,客户既不会期望过高,又不会频繁变更需求,后续的设计、开发就不会这么被动了。 Dumpedjoe Business analyst的位置在国内一般都是由architect或者PM担任,PM大多也是技术优而PM,由于看问题的角度较多是从技术出发,而且业务领域的知识很少能达到(超过?)客户水平,所以大都是像刘庆所说,找几个业务人员聊聊,填填需求规格说明书模版,争取让客户签字确认就是成功,后续能够对需求变更进行记录和跟踪就算是不错的了。 造成这样的状况是一般都是由两方面决定的,第一是实施人员缺乏成熟方法论的指导和必须的技能,成熟的咨询公司都有经过无数项目验证的方法论的指引(例如ERP实施SAP有GLOBALASAP和VALUESAP,ORACLE有AIM,这些都不是概念炒作而是实际的过程指导)并且有专职的、在某些行业有丰富业务知识的business analyst,相信实施过相关项目的人有深切的体会(ERP实施成功的没几个?往下看),而DW实施同样如此,尤其对于面向高管人员提供决策支持的BI系统,不是像Annie Liu所说的那样要么牵客户的鼻子,要么被牵,指望公司的business analyst都能达到一个行业浸淫数十年的CXO的高度是不现实的,重点是记录并理解CXO的想法,将客户的思考和意愿转化为商业问题,然后通过和architect、PM的沟通,在TQC的三角中做出恰当的选择,能做的肯定不推,不行的坚决不搞。在这个基础上,需求变更是正常的,那是咱们挣钱的机会啊,客户不给?往下看。 其次不成熟的客户也是造成该现象的一个因素,不成熟体现在以下几个方面:一是我有想法,但是没空聊,找小弟聊吧,二是我没想法,我不聊,以后想起来再说,三是我有想法,聊聊吧,都得听我的,乙方都是孙子,咱是爷啊,项目成本会超?你还做不做了?!应对的方法就是在商言商,清晰界定责任和义务,出了问题是谁的责任?!别看广告,看文件啊!公司没实力就算了,能中标就不错了,加强一下“沟通管理”吧,狂勾兑,否则就只能惹不起躲得起,等天亮吧。 刘庆 看来作需求也得找个大款傍一傍啊,昨天看到一个大款项目的组织结构,列出一些人的角色,有个女的,名头为"项目管理员"。但后面的职责描述却令我羡慕不已,说到"主要工作为提醒项目经理一些重要的约见,包括其与项目资金负责人和核心团体的会见,另外还包括为项目经理安排每阶段一次的为期一周的休假。" BI4Fun 如果需求不变化,那就不是需求。正因为跟需求分析人员的接触,与你的交流,用户不断地将自己的思维内容和想法展现给需求分析人员,而往往这个时候需求定义的时间已经过去了大半,所以项目进度啊,系统设计啊都受到影响,何况有些就直接影响项目的整个开发难度和周期,所以一个好的需求不是需求分析人员完全可以控制好的,需要PM,SM的配合。 BI系统的建设就是一个不断建设的过程,是个递进式的,更何况中国用户的信息化建设脚步大,业务不规整。,如果期望几个月搞完诸如联通这样的分析主题,基本是不太可能。 Dumpedjoe 看这样子不但要傍大款,还得是“市面”最流行的,现在NB客户太多,18摸等天天走马灯式的拜访,花哨PPT见过无数,新名词听得耳朵出茧,18摸,M$?,不行(也许应该说no way),现在流行boston,google,bearingpoint?考虑考虑约个时间,McKinsey我们可以见见,难道是个说鸟语的公司我们都见,岂不累死大爷。 于是乎弟兄们眼热心跳,心潮澎湃,看某牛拒绝需求斩钉截铁,看某牛的专家一来气势如虹,看以前差不多的兄弟一朝升天,昨天还在点头哈腰今日便NB哄哄,于是生出许多幽怨,可怜咱们不光委屈,偶尔还要被客户问候,于是卧薪尝胆混成甲方,于是自我挖潜进入鸟公司,说鸟语、变鸟人,于是澳洲、英国MBA的简历漫天飞舞,再不济拼拼小身体混完两年回家休息,不是现在客户太坏就是市场被人做坏,爱尔兰、印度、以色列这帮穷酸就是给欧美打工,follow什么CMM5,方法论都是扯淡,他们搞的能叫东西?牛人都该致力于技术,联想研究院?拜托换人,哥哥我虽说现在不行,但有理想追求,现在流行的是开复李,要不咱就open source,嘴里念念RMS就是他的传人,gnome的管理方法论?兄弟你不是玩真的吧?中国IT逐渐的“成熟”,我们随之也茁壮的成长,好一派热闹繁荣的景象。 数据仓库总体架构 丁西宁 Conformed dimension 和 conformed facts 都是Kimball建立数据仓库总线架构中的概念,数据仓库总线架构的核心元素是data marts and dimensional models。 建立数据仓库总线架构的原因有几个: 如果企业已经存在了不同的数据集市,在这些数据集市之间,即使对于同一个业务也可能存在不同的维度定义,不同的指标含义,不同粒度的度量。如何屏蔽这些不统一的因素,充分的利用这些已经有的资源? 对于不同的数据集市,如何在报表中对进行drill-through?即使两个集市的指标粒度是不同的?例如:货物在运输过程中的计量单位是吨,而在零售店里面的计量单位是听。 客户的需求不停的变化,新的维度、新的事实表如何加入到已有的数据仓库系统中? Conformed dimension的作用就像电脑的总线接口一样,是一个标准,所有以总线接口为标准的外设都可以直接在电脑中使用。用在数据仓库上,所有根据Conformed dimension设计的数据集市,即使使用技术不同,指标的粒度不同,都可以通过Conformed dimension来统一进行解释。不同数据集市之间通过Conformed dimension来进行交互。至于Conformed facts,我的理解是不同事实表的一个统一的视图。Innovate511说可以用它来进行汇总,来解决不同的业务需求。可能的话,还请Innovate511再讲讲吧。(单独讲也行,也许大家都明白了) Innovate 看过Kimball的life cyle的都知道,Kimball的data model设计思想的中心还是Bus Architecture Matrix。不知道大家看到书上的矩阵图有何感想?其实这就是data model方面的架构思想,作为建模者,就应该通过这种矩阵图,把握建模的全局。上面也说了,那是个样板图,如果业务比较复杂的话,不能一个矩阵图就包含了所有信息,那样就不容易分析,但是可以一个业务层一个图。像楼主所说,增加维表、增加事实表这种情况,非常常见的,但是如何和我们的系统融合,那就请放到矩阵图里,先理清楚逻辑关系,再详细设计。 至于统一标准的问题,不是每个情况,你都需要统一标准,而且有的情况客户需要的就是要不同的标准。这个时候需要一个参考维表,比如一个国际大公司收入各种货币都有,但是你把所有都转换为美金不现实的,因为地方分公司要看当地的货币更直观,而同样的业务指标,老总要看的是美金,而货币换算每天都在更新,所以得有个维表来存储这些信息。 最后说一个问题,建立怎样的数据仓库。我DW是个工程,没有定势,Inmon的也好,Kimball的也好,只是些理论的指导,具体的项目唯一的目的就是帮助客户更好地实现BI,所以我觉得没有必要争论哪个更好。不是我是中间派,而是项目实际上需要你灵活设计。就业务层来说,对于你解决了各个部门的独立的需求的情况下,老总的业务汇总如何设计?就数据层面来说,如何平衡各个部门对于业务不同的认识、每个部门对应数据量和业务复杂程度不同,是否需要分开设计数据逻辑架构?这些都要考虑到。所以我之前提出了,移动公司争论的业务驱动还是数据驱动都是片面的,应该同时驱动,整体架构Matrix(业务和数据),建模用Kimball的Matrix,数据流请也Matrix(不同业务层分开流,最后汇总,维表在不同数据层并不是一成不变的)。呵呵,不是我自己乱创造、模仿概念,而实际国外成功的复杂的项目,就是一个矩阵架构,只是我们自己设计的时候,不要把自己给绕进取了就好。
责编:姜玲 微信扫一扫实时了解行业动态 微信扫一扫分享本文给好友 著作权声明:畅享网文章著作权分属畅享网、网友和合作伙伴,部分非原创文章作者信息可能有所缺失,如需补充或修改请与我们联系,工作人员会在1个工作日内配合处理。 |
热门博文 |
|