OLAP(联机分析处理)

前言

OLAP侧重于数据仓库中的数据分析,并将其转换成辅助决策信息。OLAP的一个重要特点是多维数据分析,而数据仓库的多维数据组织正好形成相互结合、相互补充的关系。OLAP的典型应用是是对多维数据的切片和切块、钻取、旋转等,从不同角度提取有关数据。
OLAP专门用于支持复杂的决策分析,支持信息管理和业务管理人员决策活动的一种决策分析工具。它可以根据分析人员的要求,迅速地对大量数据进行复杂的查询处理,并且以直观的、易理解的形式将查询结果提供给各种决策人员。
OLAP技术主要有两个特性:一是在线性;二是多维分析(Multi-Analysis),这也是OLAP技术的核心所在。

基本概念

OLAP包含维、维的层次、维成员、多维数据集、数据单元、多维数据集的度量值等基本概念。

维成员

维成员是维的一个取值,如果维已经分成若干个维,那维成员就是不同维层次取值的组合。维成员并不一定要在维的每一个层次上都取值。例如,“江苏省南通市”、”南通市通州县”都是地理位置维的维成员。维成员的值并不是人们在数据库中所关心的对象,而是常常使用这些维成员去描述他所关心的其他对象,即主题,在维中的位置。例如,企业的销售管理人员只对销售数据感兴趣,但是观察销售数据时,却需要以地理位置维、时间维、和产品维的维成员值去描述销售数据。

多维数据集

多维数据集是决策支持的支柱,也是OLAP的核心,有时也称为立方体或超立方。OLAP展现在用户面前是一幅幅多维视图。多维数据集可以用一个多维数组来表示。例如,经典的时间、地理位置和产品的多维数据集表示为:(时间,地理位置,产品,销售数据)。可以看出,多维数据集可用(维1,维2,。。。,维n,观察变量)的方式进行表达。三维数据可由三维坐标来表示,如图4;而超三维数据可以用多维表(或者多维数据集)进行表示。

file
图1 以时间、销售地区、产品三个维所构成的多维数据集

file
表1 三维以上(超三维)的多维数据集

数据单元(多维数据集的值)

多维数据集的取值为数据单元。当在多维数据集中的每个维都选中一个维成员以后,这些维成员的组合就唯一确定了观察变量的值。数据单元也就可以表示为:(维1维成员,维2维成员,维3维成员,维4维成员,观察变量值)[多维数据集]。从表1中,时间、销售地区、产品维度上分别选取了“上海”,“2002年4月”和“服装”,则可以唯一确定观察变量的值(10000)[这个值是用户或决策者最终关心的值],这样该数据单元为(上海,2002年4月,服装, 10000)。

多维数据集的度量值

在多维数据集中有一组度量值,这些值是基于多维数据集中事实表的一列或多列,这些值应该是数字(观察变量的值)。度量值是多维数据集的核心值,是最终用户在数据仓库应用中所需要查看的数据,一般是销售量、成本和费用等。

OLAP多维分析

OLAP的多维分析是指对多维数据集中的数据用切片、切块、旋转等方式分析数据,使用户从多个角度、多个侧面去观察数据仓库中的数据。这样才能深入地了解数据仓库中数据所蕴含在后面的信息,才能使用户深入地挖掘隐藏在数据背后的商业模式。

多维的切片

如果对多维数据集的某个维选定一个维成员(该维的一个值),这种选择操作称为切片(slice)。即如果有(维1、维2、…,维n,观察变量)多维数据集,对维1选定了某个维成员,则(维1成员,维2,…,维n,观察变量)就是多维数据集(维1、维2、…,维n,观察变量)在维1上的一个切片。这种切片的数量完全取决于维1上的维成员个数(值的个数)。如果维数越多,则可以做的切片越多。
只有在三维数据集可以得到二维的“平面”切片,如图4所示。如果选定了产品维上的一个维成员“服装”,那就可以得到一个关于服装的、在不同地区、不同时间中的销售情况。
在切片的概念中,有两个重要的概念必须掌握:一是多维数据集的切片数量多少是由所选定的那个维成员数量的多寡所决定的;另一个是切片操作的目的是使人们能够更好地了解多维数据集,通过切片的操作可以降低多维数据集的维度,使人们能将注意力集中在较少的维度上进行观察。

多维的切块

如果在一个多维数据集上对两个及其以上的维选定维成员的操作称为切块。即如果有(维1、维2、…,维I,…维k,…维n,观察变量)多维数据集,对维I,…维k选定了某个维成员,则(维1成员,维2,…,维I成员,…维k成员,…维n,观察变量)就是多维数据集(维1、维2、…,维I,…维k,…维n,观察变量)在维I,…维k上的一个切块。

旋转

在对数据仓库中的多维数据集进行显示操作过程中,用户常常希望能将多维数据集改变其显示的维方向,也就是对多维数据集进行旋转(rotate)操作。旋转操作可将多维数据集中的不同维进行交换显示,使用户更加直观地观察数据集中不同维之间的关系。

其他OLAP操作

在OLAP的分析中,还有“钻过”(drill_across)和“钻透”(drill_through)。前者对多个事实表进行查询,后者指对立方体操作时,利用数据库关系,钻透立方体的底层,进入后端的关系表。
OLAP的其他操作还有统计表中最高值和最低值的项数,计算平均值、增长率、利润
、投资回报率等统计计算。

数据仓库与OLAP的关系

数据仓库和OLAP是两个不同的概念。数据仓库采取一种集中式的结构,将整个公司的数据统一储存在一个数据库中。数据仓库的数据撷取是以数据立方体(data cube)的方式出现的,而多维度的储存模式能够对数据做许多不同的查看和各种组合。所以数据仓库需要支持多维分析的查询模式,这也是关系数据库在数据仓库领域遇到的最严峻的挑战之一。所以用户对数据仓库的访问不是简单的表和记录的查询,而是基于用户业务的分析模式,即联机分析(OLAP)。
用户的查询相当于在数据立方体的部分维上施加条件,对立方体进行切片、分割,得到的结果则是数值的矩阵和向量,并将其制成图表或输入数理统计的算法中,这就是OLAP的具体过程。(关联查询+算法)
典型的OLAP运作包含数据的集结(consolidate)、下探(drill-down)(如查询定义)、切片(slice)、切丁(dice)及枢纽(pivot)。
数据仓库和OLAP相结合才能完成辅助决策功能。数据仓库侧重于存储和管理面向决策主题的数据,OLAP则侧重于对数据仓库的中的数据进行分析,二者相辅相成,共同完成决策支持或满足特定的查询或报表需求。

追求梦想,做最好的自己