BI 软件能对付多少数据分析任务?

其实没多少!
从早期喊的多维分析到近年来喊敏捷 BI,BI 厂商一直在强调自助能力,宣称可以由业务人员自己随心所欲地分析数据,而用户也常常有强烈的需求,双方一拍即合,很容易形成购买行为。
不过,就大多数缺乏 BI 应用经验的用户所期望的工作内容而言,自助分析的目标就可以说远远达不到!从经验上看,最好情况也就能解决 30% 左右的问题而已,而大多数 BI 产品连这个数也达不到,只能处理 10% 左右的需求。

数据分析的根本在于数据,或者说是在于计算,而不是界面。新一代敏捷 BI 产品在界面美观度和操作方便度上有了不小的进步,但数据运算能力还是没能超出多维分析的范围。
多维分析是指针对某个事先准备好的数据集(称为立方体 CUBE),以一定的条件过滤后(称为切片)按指定维度查看某些统计值,比如某年中某产品按地区和月份汇总的销售量和销售额,用 SQL 写出来都是这么一种样子:

SELECT Di,...,SUM(Mi),COUNT(Mi),... FROM T GROUP BY Di,... WHERE Di=... AND Di IN (...) ...

BI 软件的作用在于让用户改变过滤条件和查看维度时特别方便,可以从当前已经看到的状态走到目标状态,就是所谓的旋转、钻取、切片等动作,这对于交互分析很有意义。但是,无论怎样的方便流畅,能做的运算也还是这么一句 GROUP BY+WHERE,并没有更多。

BI 产品有时还能支持一些简单的跨行组运算,比如计算比上期、排名、占比等,显然这些运算的结果对于商业分析也有着重要的意义。跨行组运算和常规汇总不同,常规汇总只有给定一组维度就可以统计了,而跨行组运算还要多一个范围层次,但市面上大多数 BI 软件并没有关注这个,会武断地把范围层约定为全集。这样如果想看看某地区销售额在省内的排名,就只能先把数据切片限定在省内,然后一个个省来看,否则就只能看到在全国范围内的排名了,这很不方便。考察 BI 软件时要特别注意这一点,是不是支持给跨行组运算设定范围层,厂商当然都会说能支持跨行组运算,但支持程度弱的时候就会导致有些分析任务做不了。
做到多维分析这一步,其实只能解决 10% 左右的自助需求,这是 BI 产品最常见的自助能力。

多维分析的主要问题在于有个建模过程,也就是要事先准备数据集,分析的数据也要限定在数据集中。但实际应用中会经常超出这个范围,可能会涉及到以前没想到的数据项,或者和另一个数据集做一个关联运算,这都会导致再建模。而建模需要求助于技术人员,这样业务人员的自助就无从谈起了。
为解决这个局限性,有些 BI 产品开始提供关联查询能力。一般是在多维分析前面增加一步,能够基于多个数据集关联计算出新的数据集再来做多维分析,或者在多维分析过程中支持多个立方体间的某些关联运算。这相当于允许业务用户一定程度可以自己建模。
不过,实现关联查询并不容易,其根源是关系数据库对关联运算(JOIN)的定义过于简单造成的,导致数据集之间的关联关系看起来过于繁琐,超出许多业务人员的理解能力。这个困境在 BI 产品的界面协助下能有一些改善,好的 BI 产品能够让业务人员自动处理表间唯一的关联关系。但面向不唯一的情况(企业应用中很常见)仍然很困难,我们之后会再仔细讲这个话题。要从根本上解决这个问题,就要改变数据库层的数据组织模型。而几乎所有的 BI 产品都不会重新定义数据库的数据模型,其关联查询能力就会受限。
一个可用于检验 BI 产品关联能力的通俗例子:查询女经理的男员工。这个很简单的查询需求中涉及到同一数据集的多次关联,大多数 BI 产品都处理不了(除非事先建模)。
有了关联查询能力后,BI 产品能解决的自助需求占比能提高到 20%-30%,具体程度要看产品提供的关联能力的强弱。

剩下更多的需求,就都会涉及到有多步骤的过程计算,这完全超出绝大多数 BI 产品的设计目标了,但却是用户特别希望解决的问题,做到这一步,才能叫业务人员随心所欲地分析数据。
一个简单办法是使用 BI 产品导出基本数据,由业务人员自己用 Excel 等桌面工具去做,Excel 足够灵活方便,可以相对随心所欲地完成多步骤运算,从这个意义讲呢,Excel 才是最重要的 BI 工具。
不过,Excel 面对较复杂的数据计算以及要反复执行的运算也会无能为力,而且数据量大了也撑不住,在许多应用场景无法胜任。Excel 这些缺失,都可以用 esProc SPL 来配合补充,不过说来话长,之后再讲。

针对于用户最普遍的自助数据分析需求,BI 产品的能力实际上是相当弱的。经常的情况是:BI 厂商说的是多维分析,而用户想的是那些需要过程计算才能解决的问题,这个错位就会导致期望高而失望大的局面。用户要清楚自己的自助需求:是否做到多维分析就够了?有多少关联查询需求?业务人员是否会提出大量需要过程计算的问题?这样才能设定合理的期望值,知道 BI 产品对自己的作用在哪里,不被产品的花哨界面和流畅操作迷惑,避免事后的遗憾。
BI 界以前有个词叫 shelfware,就是用来描述这种中看不中用的产品。厂家人员开玩笑说卖的不是 software,而是买来就被扔进柜子不再动的 shelfware。在演示阶段让用户产生极大的期望以为真能让业务人员自己分析,实际用起来完全不是那回事,结果都被当作报表工具在用,而这些 BI 软件做报表的能力还很差。这是购买 BI 产品的一个大坑!