半年来一直在面试,面的很多BI工程师,一谈BI必谈DW。于是我问,为啥要搞DW,BI和DW啥关系?得到的答案无外乎BI是寄生在DW之上的报表工具,而DW是为决策支持的数据存储之类。但个人觉得DW这个始于80年代的产物,正在走下坡路。为啥这样说,因为企业投入一个项目必须关注于投入回报,在做DW之前我们要问它的投入要多大?给什么人用,作用有多大?
首先,我要纠正一个错误的概念,部分人说DW是给高层用的,其实不然。企业的管理人员通常分成两部分:运营和战略。这两类人都需要数据支持决策,但对数据的需求和态度是不一样的。
· 运营:需要尽量实时、准确、运营类的数据,每周甚至每隔两天就会查看报表,他们甚至会对1000元的差别产生质疑;
· 战略:大部分需要财务数据,大概一两个月,或一个季度看一次报表,只需要知道大致的趋势,10亿和10.03亿对他们来说差别不大。甚至他们不用看报表,就从每次的会议和PPT中知道大概的情况;
再来看DW,传统的DW是通过开发ETL整合各种运营系统(ERP、SCM)的数据,这些都是运营类数据。就一线管理人员来说,他可以分析哪些门店的销售额高。但对VP、CxO这些战略管理层来说,他们会对公司个人消费事业部-中国总公司-上海分公司-市场部,提交的门店分析报表感兴趣吗?因此DW的作用是非常有限的。
再来,我把企业分成两类,一类是传统企业,另一类是中小企业和互联网这类新兴行业。
对传统企业,它的业务模式比较成熟,企业规模较大,而且较早实施ERP各种系统,IT生态环境较好。那么对于运营人员来说,他们的打交道的主要平台是ERP,他们需要的是一体化的系统。而ERP针对不同的岗位和职能提供相应的报表,和简单的多维分析,这时候的BI是整合在ERP里,就是我们以前说的Operational BI,Oracle对BI的定位是Middleware里,应该也是这个道理。这种情况下我们有啥理由再投入人力和物力去搞什么DW呢。
对新兴和中小企业,它们的特点是业务模式变化很快,所以他们开发DW的成本和风险可能是传统行业的数倍或者数十倍。例如互联网行业,每周线上系统可能会加十来个new feature。有些时候新功能今天上线,明天就想通过DW拿到数据,效果不好下周就下线。ETL跟源系统的耦合性是很高的,DW团队最害怕的就是源数据库的修改。推动整个公司做元数据管理、做影响分析,在这类企业不现实。如果一个修改让ETL直接报错问题到不大,难在源数据库的物理结构没变,但数据的业务定义变更。所以,很多时候DW团队只能被动的夹在业务用户和源系统开发人员加,一会ETL报错,一会又被指责数据不对。
那么,就我在面试中搜集到的,企业做DW主要基于三个原因。
1. 数据量大,特别是互联网行业这是主因。线上系统响应要求高,为了让报表不影响性能,需要把这类需求分离出来。这种情况可以直接使用GoldenGate等技术,将数据同步到一个Standby的数据库做查询和统计,又可以避免源数据库修改带来的影响;
2. 多种数据源,多系统。这是中小企业发展过程中常会碰到的遗留问题,会慢慢解决。另外的有些情况就没法避免了,比如日志文件整合到数据库中、第三方合作伙伴的数据整合等;
3. 将数据重组成维度模型,方便做OLAP。现在的OLAP建模工具都足够强大,不要求在关系型数据中有明确的维度和事实表定义;
就上述三个原因,就只有第2个能成立。因此,现在的数据仓库已经开始受到质疑。老板关心的始终是ROI,他不关心你怎么搞的,关键是投入了那么多产出的是什么。既然数据已经存在,为什么又另外搞一个数据库,而且还是一个经常听到运营人员抱怨数据不可靠的数据库。