OLAP ,即联机分析处理,是 BI 带来的一种全新的数据观察方式,是 BI 的核心技术之一。
我们知道,数据在数据库中是以数据表来存储的,比如某商店的销售数据存储在如下所示的一张数据表中:
|
销售时间
|
销售地点
|
产品
|
销售数量
|
销售金额
|
|
2004-11-1
|
北京
|
肥皂
|
10
|
342.00
|
|
2004-11-6
|
广州
|
桔子
|
30
|
123.00
|
|
2004-12-3
|
北京
|
香蕉
|
20
|
12.00
|
|
2004-12-13
|
上海
|
桔子
|
50
|
189.00
|
|
2005-1-8
|
北京
|
肥皂
|
10
|
342.00
|
|
2005-1-23
|
上海
|
牙刷
|
30
|
150.00
|
|
2005-2-4
|
广州
|
牙刷
|
20
|
100.00
|
决策者希望知道的往往是分布、占比、趋势之类的宏观信息,比如下列问题:
>> 北京地区的销售数量虽时间的变化趋势?
>> 哪种产品在 2005 年销售比 2004 年销售增幅最大?
>> 2004 年各产品销售额的比例分布? ……
面对这种需求,必须用 SQL 语句进行大量的 SUM 操作,每得出一个问题的结果,就需要 SQL SUM。面对上面的 7 条记录,我们可以很容易的得出结果,但是当我们面对百万级甚至亿级的记录条数时,例如移动公司通话数据,每次 SQL SUM 都需要消耗大量的时间来计算,决策者经常是在第一天提出分析需求,等到第二天才能拿到计算结果,这种分析方式是“脱机分析”,效率很低。
为了提高数据分析效率,OLAP 技术彻底打破以记录为单位的数据浏览方式,而将数据分离为“维度(Dimension)”和“度量(Measure)”:
>> 维度是观察数据的角度,例如上面示例中的“销售时间”、“销售地点”、“产品”;
>> 度量是具体考察的数量值,例如上例中的“销售数量”和“销售金额”;
这样一来,我们就可以将上面这张平版的数据列表转换为一个拥有三个维度的数据立方体( Cube ):
而探查数据的过程,就是在这个立方体中确定一个点,然后观察这个点的度量值:
当然,数据立方体并不局限于三个维度,这里采用三个维度来说明问题,只是因为通过图形可以表现出来的极限就是三个维度。
维度可以划分层次,例如时间上可以从日向上汇总为月和年,产品可以向上汇总为食品和日用品,地点可以向上汇总为华北和华南,用户可以沿着维度的层次任意向下钻取(Drill Down)和向上汇总(Roll Up):
通过这种方式,我们就可以摆脱 SQL SUM 对速度的制约,快速定位符合不同条件的细节数据,更可以迅速得到某一层次的汇总数据。OLAP 技术为决策者提供了多角度、多层次、高效率的数据探查方式,决策者的思维不再被固定的下拉菜单、查询条件所束缚,而是由决策者的思维带领数据的获取,任意组合分析角度和分析目标,这种打破传统的互动性分析和高效率使 OLAP 成为 BI 系统的核心应用。
下图是 Cognos Powerplay 提供的 OLAP 分析界面,用户仅需把自己感兴趣的维度和度量拖拽到相应位置,就能获得图表和报表:
|