OLAP介绍
OLAP即联机分析处理,是BI带来的一种全新的数据观察方式,是BI的核心技术之一。
我们知道,数据在数据库中是以数据表来存储的,比如某连锁超市的销售记录存储在如下所示的一张数据表中:
| 销售时间 | 销售地点 | 产品 | 销售数量 | 销售金额 |
2004-11-1 06:30:01 | 北京 | 肥皂 | 1 | 5 |
2004-11-1 07:30:13 | 北京 | 肥皂 | 3 | 15 |
2004-11-1 17:30:13 | 北京 | 肥皂 | 6 | 30 |
2004-11-2 06:30:11 | 北京 | 肥皂 | 3 | 15 |
2004-11-2 08:30:11 | 北京 | 肥皂 | 10 | 50 |
2004-11-2 08:30:11 | 北京 | 桔子 | 10 | 30 |
2004-11-2 10:30:01 | 北京 | 桔子 | 10 | 30 |
2005-1-8 06:30:11 | 北京 | 肥皂 | 20 | 130 |
2005-2-4 06:30:11 | 广州 | 桔子 | 13 | 34 |
2005-2-4 08:30:11 | 广州 | 桔子 | 10 | 46 |
决策者希望知道的往往是分布、占比、趋势之类的宏观信息,比如下列问题:
♦ 北京地区的销售数量随时间的变化趋势?
♦ 哪种产品在 2005 年销售比 2004 年销售增幅最大?
♦ 2004 年各产品销售额的比例分布?
面对这种需求,必须用 SQL 语句进行大量的 SUM 操作,每得出一个问题的结果,就需要 SQL SUM。面对上面的 10 条记录,我们可以很容易的得出结果,但是当我们面对百万级甚至亿级的记录条数时,例如移动公司通话数据,每次 SQL SUM 都需要消耗大量的时间来计算,决策者经常是在第一天提出分析需求,等到第二天才能拿到计算结果,这种分析方式是“脱机分析”,效率很低。
为了提高数据分析效率,OLAP 技术彻底打破以记录为单位的数据浏览方式,而将数据先进行汇总,再分离为“维度(Dimension)”和“度量(Measure)”,在维度和度量上进行分析。
上面的数据是柜台操作员录入的,称做事务处理数据,在上面进行的录入和分析操作叫做OLTP(联机事务处理)。在时间上,每条销售记录精确到秒,由于我们分析的粒度是到天,所以需要把这些数据按天进行汇总,汇总的过程叫做ETL,ETL是BI的另外一个核心技术。汇总之后的数据为:
| 销售时间 | 销售地点 | 产品 | 销售数量 | 销售金额 |
2004-11-1 | 北京 | 肥皂 | 10 | 50 |
2004-11-2 | 北京 | 肥皂 | 13 | 65 |
2004-11-2 | 北京 | 桔子 | 20 | 60 |
2005-1-8 | 北京 | 肥皂 | 20 | 130 |
2005-2-4 | 广州 | 桔子 | 23 | 70 |
经过汇总,数据量会下降成百上千倍,分析可以达到实时计算出结果的要求。供分析的数据是否经过汇总是olap和一般查询分析的显著区别。
维度和度量:
♦ 维度是观察数据的角度,例如上面示例中的“销售时间”、“地点”、“产品”;
♦ 度量是具体考察的数量值,例如上例中的“销售数量”和“金额”;
这样一来,我们就可以将上面这张平版的数据列表转换为一个拥有三个维度的数据立方体( Cube ):
而探查数据的过程,就是在这个立方体中确定一个维度,然后观察这个维度的度量值:
销售时间 | 销售金额 |
2004年 | 175 |
2005年 | 200 |
维度可以划分层次,例如时间上可以从日向上汇总为月和年,产品可以向上汇总为食品和日用品,地点可以向上汇总为华北和华南,用户可以沿着维度的层次任意向下钻取(Drill Down)和向上汇总(Roll Up),比如对2005年进行下钻:
| 销售时间 | 销售数量 |
1月 | 10 |
2月 | 13 |
通过这种方式,我们就可以摆脱 SQL SUM 对速度的制约,快速定位符合不同条件的细节数据,更可以迅速得到某一层次的汇总数据。OLAP 技术为决策者提供了多角度、多层次、高效率的数据探查方式,决策者的思维不再被固定的下拉菜单、查询条件所束缚,而是由决策者的思维带领数据的获取,任意 组合分析角度和分析目标,这种打破传统的互动性分析和高效率使 OLAP 成为 BI 系统的核心应用。
BI@report中基于AJAX的拖拽式OLAP
BI@Report是为数不多的提供了基于AJAX副交互界面、纯WEB方式、拖拽式OLAP分析(下文简称EASYOLAP)的BI产品,拖拖拽拽就可以简单的实现需要的分析,特别适合业务人员使用。
下图的例中列出了用户关心的6个省的医院总收入与总支出情况,而且将收支不平衡的省特别标记。在BI@Report中,从开始到最后实现这样一个分析,用户不需要使用键盘,前后只需要6次简单的鼠标操作。 
1、拖拽式操作
EASYOLAP采用拖拽式操作方式,操作简单、直观,避免了复杂的功能按钮和菜单。比如添加一个度量只需要将度量拖到要显示的位置:
这里要新增度量“财政专项支出”到总收入的左边,只需要把它拖到左边就行了。删除它也很简单,只需要把它拖出区域即可。
在EASYOLAP中大量使用拖拽操作,不仅度量和维度可以拖拽,而且过滤条件也可以拖动,比如上面的“行政区划代码”山西就是拖上去的。
2、选择式的过滤条件
对数据进行过滤是olap分析过程中基本的功能,比如“2004 年各产品销售额的比例分布”就需要限制时间为2004年。过滤分为两类,一是过滤维度,二是过滤度量。在EASYOLAP中,只需要将维度和度量拖入过滤条件栏,再选择关心的项,如下图: 
3、钻取、展开、切片
一般钻取出的数据在新的页面显示,比如下面的表显示第一级的数据:
点击“医院”链接,下钻到第二级:
点击“医院”链接,可以上钻到第一级。
如果数据很少,可以展开数据,使数据呈树形展示:
展开后可以折叠起来。
4、预警
分析的出的数据往往没有明细的特征,为了便于查看,一般提供排序功能。但是这仍不够。在EASYOLAP中,用户可以将特征归纳为条件,将符合条件的数据做特别标记,这样将大大方便数据的查看。比如上面的6省医院收支情况表,对收入小于支出的省红色显示,这里只需要定义一个预警条件“收入小于支出”即可。系统提供了丰富的预警样式,支持文字、背景、图片三种预警样式。均不需要编程,只需要选择即可使用,操作界面见下图。 

5、统计图
预警可以标记具有某一特征的数据,而图则能纵览所有数据,对度量进行直观比较,对变化趋势可以一目了然。由于olap分析的结果非常规则,所以非常适合用统计图展示,比如下面的表:
在对数据进行变换时,图会同步更新,而不需要重现改变统计图的设置。 
总结
EASYOLAP提供了标准的多维分析功能,如分页、旋转、排序、筛选、向下/上钻取、切片、展开来浏览数据,操作简便,展示形式丰富。