1第3章联机分析处理3.1OLAP概念3.2OLAP的数据模型3.3多维数据的显示3.4多维数据分析3.5OLAP的结构与分析工具2联机分析处理(OnLineAnalyticalProcessing,OLAP)在数据仓库系统中,联机分析处理是重要的数据分析工具。OLAP的基本思想是从多方面和多角度以多维的形式来观察企业的状态和了解企业的变化。33.1OLAP概念OLAP是在OLTP的基础上发展起来的。OLTP是以数据库为基础的,面对的是操作人员和低层管理人员,对基本数据的查询和增、删、改等进行处理。OLAP是以数据仓库为基础的数据分析处理。它有两个特点:一是在线性(OnLine),由客户机/服务器这种体系结构来完成的;二是多维分析,这也是OLAP的核心所在。43.1.1OLAP定义1.OLAP理事会给出的定义联机分析处理(OLAP)是一种软件技术,它使分析人员能够迅速、一致、交互地从各个方面观察信息,以达到深入理解数据的目的。这些信息是从原始数据转换过来的,按照用户的理解,它反映了企业真实的方方面面。52.OLAP的简单定义联机分析处理是共享多维信息的快速分析。它体现了四个特征:(1)快速性:用户对OLAP的快速反应能力有很高的要求。(2)可分析性:OLAP系统应能处理任何逻辑分析和统计分析。(3)多维性:系统必须提供对数据分析的多维视图和分析。(4)信息性:OLAP系统应能及时获得信息,并且管理大容量的信息。61993年,E.F.Codd提出OLAP的12条准则,用来评价分析处理工具,这也是他继关系数据库和分布式数据库提出的两个“12条准则”后提出的第三个“12条准则”。其主要的准则有:多维数据分析;客户/服务器结构;多用户支持;一致的报表性能等。3.1.2OLAP准则71.多维概念视图企业的数据空间本身就是多维的。因此OLAP的概念模型也应是多维的。用户可以对多维数据模型进行切片、切块、旋转坐标或进行多维的联合(概括和聚集)分析。84.一致稳定的报表性能报表操作不应随维数增加而削弱,即当数据维数和数据的综合层次增加时,提供的报表能力和响应速度不应该有明显的降低。95.客户/服务器体系结构OLAP是建立在客户/服务器体系结构上的。多维数据库服务器能够被不同的应用和工具所访问。客户端负责应用逻辑及用户界面。108.多用户支持能力当多个用户要在同一分析模式上并行工作,OLAP工具应能够提供并发访问等功能。11.灵活的报表生成报表必须充分反映数据分析模型的多维特征,并可按用户需要的方式来显示它。11OLAP是针对特定问题的联机数据访问和分析。(1)变量:变量是数据的实际意义,即描述数据“是什么”。(2)维:维是人们观察数据的特定角度。如产品维、顾客维、时间维等。(3)维的层次:数据的细节不同程度为维的层次。如日、月、季、年是时间维的层次。(4)维成员:维的一个取值称为该维的一个维成员。如“某年某月某日”是时间维的一个成员。3.1.3OLAP的基本概念12(5)多维数组:一个多维数组可以表示为:(维1,维2,……,维n,变量)一个4维的结构,即(产品,地区,时间,销售渠道,销售额)。(6)数据单元(单元格):多维数组的取值称为数据单元。如:4维数据单元(牙膏,上海,1998年12月,批发,销售额为100000)。OLAP的基本概念(续)133.2OLAP的数据模型3.2.1MOLAP数据模型3.2.2ROLAP数据模型3.2.3MOLAP与ROLAP的比较3.2.4HOLAP数据模型143.2.1MOLAP的数据模型MOLAP是基于多维数据库存储方式建立的OLAP;表现为“超立方”结构,采用类似于多维数组的结构。例如,二维MDDB(数组,即矩阵)的数据组织见表3.1所示。北京上海广州衣服600700500鞋800900700帽子10020080表3.1MOLAP的数据模型15在查询中除查询一般的“衣服在广州的销售量”外,有时查询“衣服的总销售量”等问题,涉及到多个数据项求和,如果采取临时进行累加,会使查询效率大大降低,为此需增加汇总数据项。北京上海广州总和衣服6007005001800鞋8009007002400帽子10020080380总和1500180012804580表多维数据库中晗综合数据的组织163.2.2ROLAP数据模型ROLAP是基于关系数据库的OLAP。它是一个平面结构,用关系数据库表示多维数据时,采用星型模型。17产品名地区销售量衣服北京600衣服上海700衣服广州500鞋北京800鞋上海900鞋广州700帽子北京100帽子上海200帽子广州80表3.3关系数据库RDBMS数据组织183.2.3MOLAP与ROLAP的比较1.数据存取速度2.数据存储的容量3.多维计算的能力4.维度变化的适应性5.数据变化的适应性6.软硬件平台的适应性7.元数据管理191.数据存取速度ROLAP服务器需要将SQL语句转化为多维存储语句,临时“拼合”出多维数据立方体。因此,ROLAP的响应时间较长。MOLAP在数据存储速度上性能好,响应速度快。202.数据存储的容量ROLAP使用的传统关系数据库的存储方法,在存储容量上基本没有限制。MOLAP通常采用多平面叠加成立体的方式存放数据。当数据量超过操作系统最大文件长度时,需要进行数据分割。多维数据库的数据量级难以达到太大的字节级。213.多维计算的能力MOLAP能够支持高性能的决策支持计算。ROLAP无法完成多行的计算和维之间的计算。224.维度变化的适应性MOLAP增加新的维度,则多维数据库通常需要重新建立。ROLAP对于维表的变更有很好的适应性。235.数据变化的适应性当数据频繁的变化时,MOLAP需要进行大量的重新计算,甚至重新建立索引乃至重构多维数据库。在ROLAP中灵活性较好,对于数据变化的适应性高。246.软硬件平台的适应性ROLAP对软硬件平台的适应性很好,而MOLAP相对较差。7.元数据管理目前在元数据的管理,MOLAP和ROLAP都没有成形的标准。MOLAP和ROLAP的对比简表MOLAPROLAP固定维可变维维交叉计算多维视图行级计算超大型数据库读-写应用维数据变化速度快数据集市数据仓库263.2.4HOLAP数据模型HOLAP(HybridOLAP),即混和OLAP介于MOLAP和ROLAP之间。在HOLAP中,对最常用的维度和维层次,使用多维数据表来存储,对于用户不常用的维度和数据,采用ROLAP星型结构来存储。在HOLAP的多维数据表中的数据维度少于MOLAP中的维度表,数据存储容量也少于MOLAP方式。HOLAP在数据存取速度上又低于MOLAP。273.3多维数据的显示3.3.1多维数据显示方法3.3.2多维类型结构(MTS)3.3.3多维数据的分析视图283.3.1多维数据显示方法多维数据的显示只能在平面上展现出来。三维数据无法在平面上展现出来。三维数据显示见表3.6所示。产品名地区时间销售量衣服北京1月100衣服北京2月200衣服北京3月300衣服上海1月200衣服上海2月300衣服上海3月400衣服广州1月150衣服广州2月250衣服广州3月300鞋北京1月150鞋北京2月300鞋北京3月350鞋上海1月200鞋上海2月300鞋上海3月400鞋广州1月150鞋广州2月250鞋广州3月300…………303.3.2多维类型结构(MTS)表示方法是:每一个维度用一条线段来表示。维度中的每一个成员都用线段上的一个单位区间来表示。例如,用三个线段分别表示时间、产品和指标三个维的多维类型结构如图3.3所示。31在图3.3多维类型结构(MTS)中,指定时间维成员是3月,产品维成员是鞋,指标维成员是销售量,这样它代表了三维数据总得一个空间数据点,如图3.4所示。323.3.3多维数据的分析视图在平面的屏幕上显示多维数据,是利用行、列和页面三个显示组来表示的。例如,对上例的四维MTS实例,在页面上选定商店维度中“商店3”,在行中选定时间维的“1月、2月、3月”共3个成员,在列中选定产品维中的“上衣、裤、帽子”三个成员,以及指标维中的“固定成本、直接销售”二个成员。该四维数据的显示如图3.6所示。商店3(页面)上衣裤帽子直接销售固定成本直接销售固定成本直接销售固定成本1月4503505504505004002月3802804603604003203月40031048041045040033对于更多维度的数据显示,需要选择维度及其成员分布在行或者列中。在页面上可以选定多个维度,但每个维度只能显示一个成员。在行或者列中一般只选择二个维,每个维可以多个成员。例如,对6个维度数据,它的MTS如图3.7所示。34对以上6维数据中,设定页面维度为商店的成员是“商店3”,客户维度成员是“老年”。行维度含时间维和产品维共2个维度,其中时间维中成员为“1月、2月、3月”。产品维中成员为“桌子、台灯”。列维度含指标维和场景维共2个维度,其中指标维中成员为“直接销售、间接销售、总销售”。场景维中成员为“实际、计划”。具体的显示数据如图3.8所示。商店3,老年(页面)直接销售间接销售总销售实际计划实际计划实际计划1月桌子250300125150375450台灯2653201331604004802月桌子333400167200500600台灯2833401421704255103月桌子350420175210525630台灯250300125150375450353.4OALP的多维数据分析3.4.1多维数据分析的基本操作3.4.2广义OLAP功能3.4.3多维数据分析实例36例如,以“产品、城市、时间”三维数据,如图时间城市产品电视机电冰箱广州上海9596373.4.1多维数据分析的基本操作1.切片选定多维数组的一个二维子集的操作叫做切片。例如:对三维数据,通过“切片”,分别从城市和产品等不同的角度观察销售情况:电视机电冰箱广州上海382.切块切块有两种情况:(1)在多维数组的某一个维上选定某一区间的维成员的操作切块可以看成是在切片的基础上,确定某一个维成员的区间得到的片段,也即由多个切片叠合起来。(2)选定多维数组的一个三维子集的操作在多维数组(维1,维2,……,维n,变量)中选定3个维,维i、维j、维k,在这3个维上分别取一个区间,或任意维成员,而其它维都取定一个维成员。393.钻取钻取有向下钻取(drilldown)和向上钻取(drillup)操作。向下钻取是使用户在多层数据中能通过导航信息而获得更多的细节性数据。向上钻取获取概括性的数据。40钻取:例如,2005年各部门销售收入表如下:41对时间维进行下钻操作,获得新表如下:2005年部门1季度2季度3季度4季度部门1200200350150部门225050150150部门3200150180270424.旋转通过旋转可以得到不同视角的数据。旋转操作相当于平面数据将坐标轴旋转。例如,旋转可能包含了交换行和列,或是把某一个行维移到列维中去。或是把页面显示中的一个维和页面外的维进行交换(令其成为新的行或列中的一个)43旋转时间维产品维产品维时间维(a)行列交换旋转以改变显示布局时间维地区维产品维时间维产品维地区维442005年2006年部门1季度2季度3季度4季度1季度2季度3季度4季度部门1200200350150120200250140部门225050150150200180230120部门3200150180270180200170250旋转前的数据实例1季度2季度3季度4季度部门05年06年05年06年05年06年05年06年部门1200120200200350250150140部门225020050180150230150120部门3200180150200180170270250旋转后的数据旋转后再切片1季度2季度3季度4季度年龄05年06年05年06年05年06年05年06年20100608