基于销售系统的联机分析处理设计

(整期优先)网络出版时间:2019-02-23
/ 4
摘  要  本文对OLAP的概念、特征及体系结构进行了分析。提出了一种OLAP分析系统的设计与实现方法,在此基础上给出了一个从OLAP数据源设计到应用程序设计的实例,实现了对数据的多角度、多层次的查询及初步分析功能。

关键词 多维数据; OLAP; 数据仓库; 联机分析处理


1  OLAP概述

    1993年,E.F.Codd提出了多维数据库和多维分析的概念,即OLAP[3][4] [5]。OLAP是数据仓库系统的主要应用,支持复杂的分析操作,侧重决策支持,并且提供直观易懂的查询结果。

1.1  OLAP技术的特性

    (1)快速性:用户对OLAP的快速反应能力有很高的要求。

    (2)可分析性:OLAP系统应能处理与应用有关的任何逻辑分析和统计分析。

    (3)多维性:多维性是OLAP的关键属性。系统必须提供对数据的多维视图和分析,包括对层次维和多重层次维的完全支持。

    (4)信息性:不论数据量有多大,也不管数据存储在何处,OLAP系统应能及时获得信息,并且管理大容量信息。

1.2  OLAP的分类

    按照存储方式可分为三类:ROLAP、MOLAP、HOLAP;按照地理位置可分为两类:Sever OLAP、Client OLAP。

    下面主要介绍一下按照存储方式所分的三类。主流的数据组织方式有3种:基于关系型数据库的;基于多维数据库的;基于关系型数据库与多维数据库的混合方式。针对不同的数据组织方式这些OLAP技术相应的称为ROLAP(基于关系型数据库的)、MOLAP(基于多维数据库的)、HOLAP(基于关系型数据库与多维数据库的)。

1.2.1  ROLAP

    ROLAP(Relational OLAP)表示基于的数据存储在传统的关系型数据库中。每一个ROLAP分析模型基于关系型数据库中一些相关的表。这些相关的表中有反映观察角度的维度表,有含有指标值的事实表,这些表在关系型数据库中通过外键相互关联,典型的组织模型有星型模型与雪花型模型。

1.2.2  MOLAP

    MOLAP(Multidimensional OLAP)表示基于的数据存储在多维数据库中。多维数据库有时也称数据立方体。多维数据库可以用一个多维数组表示。举例来说:包含时间维度、地区维度、品牌维度、销售指标的数据模型通过多维数据集合可表示成(时间维度、地区维度、品牌维度、销售指标)。通过这种方式表示数据可以极大提高查询的性能。表一给出了ROLAP和MOLAP的比较。

1.2.3  HOLAP

    HOLAP表示基于的数据存储是混合模式的(Hybrid OLAP)。ROLAP查询性能较MOLAP差,存储却较MOLAP节省。这两种方式的OLAP技术各有利弊,为了同时兼有MOLAP与ROLAP的优点,提出一种HOLAP将数据存储混合,粒度较大的高层数据存储在多维数据库中,粒度较小的细节层数据存储在关系型数据库中。这种HOLAP具有更好的灵活性[2]

表1  ROLAP与MOLAP的比较

MOLAP

ROLAP

查询性能

查询响应速度快

响应速度较快

分析能力

在支持时间连续的分析或静态分析时优势明显

因SQL制约而带来一些分析上的障碍

数据存储

基于多维数据库,容量小

基于关系数据库,容量大

数据存取

利用多维查询语言

利用关系表,用SQL实现

灵活行

使用过程中很难修改,不灵活

在使用时可修改可迅速满足用户要求

2  OLAP系统的开发技术

2.1  DTS包

    许多的组织都需要将他们的数据集中起来以提高决策的合作程度,然而他们的数据可能以不同的格式存储在不同的地方。数据转换服务(DTS)提供了一系列的工具管理这些重要的信息。它可以把不同的数据来源中的数据结合起来,并利用自身的数据转换功能,把这些结合后的数据放入数据仓库之中[4]

    在使用DTS进行数据转换或者是将数据导入导出到数据仓库中时,必须考虑以下四个过程,如图1所示。

119213737.jpg

图1  数据转换过程

    ⑴ 数据验证(Data Validation)

    ⑵ 数据迁移(Data Migration)

    ⑶ 数据清理(Data Scrubbing)

    ⑷ 数据转换(Data Transformation)

2.2 MDX

    MDX是OLAP多维立方体查询语言,在功能上类似于关系数据库查询语言SQL,是OLAP服务器与外界交互的专用语言主要语法如下:

SELECT <SET> [<dimension_properties>] ON <axis_name>

FROM  <CUBE_NAME>

WHERE (slicer_specification )

<axis_name>被定义成:

    11924947.jpg

    SELECT子句用来选择维成员和度量,由于检索的是多维数据集,ON子句用来确定所选或度量显示于哪个轴,FROM子句用来指出数据来源的立方体,这样,MDX就可以访问任何结构良好的数据立方体了[4]

2.3 Analysis Services

    Analysis Services是用于OLAP和数据挖掘的中层服务器,可以构造用于分析数据的多维数据集,同时还提供对多维数据集信息的快速客户端访问。它将数据仓库中的数据组织成包含预先计算聚合数据的多维数据集,为复杂的分析查询提供快速解答,用其可以在多维和关系数据源中创建数据挖掘模型,还可以对这两类数据应用数据挖掘模型。

    Analysis Services这个产品可以独立于SQL Services在其他系统上运行。它提供了一个功能强大的OLAP环境,这些功能包括:

    ⑴ 一个多维数据库引擎,可以通过只读或读写接口使用Multidimensional Expressions(多维表达式,简称为MDX)来存储和访问数据。

    ⑵ 一个可扩展的管理工具,Analysis Manage(分析管理器),它提供了一个基于MMC的用户接口,可以完成相应的管理功能,包括创建和编辑多维数据集、维度和度量。

    ⑶ 一个称为Decision Support Objects(决策支持对象,简称DSO)的COM的组件库,可以通过编程的方式实现对管理层的访问(甚至更多)。

    ⑷ 一个PivotTable(数据透视表)服务使其他支持用于OLAP的OLE DB应用程序能够存储并访问处于本地的OLAP多维数据集[4]

3  OLAP系统的设计

    本系统在逻辑结构上采用了三层C/S模式,即数据仓库层、OLAP引擎层和前端应用程序层,如图2所示。三层模式把工程项目(Project)划分为三部分服务:用户、事务、数据。用户服务是与用户应用程序通信有关的一切服务,通常是用户接口。事务服务包含事务逻辑,并通常组成事务对象。将三者分开可以增加系统的可重用性,事务服务组件可以重复利用。这样系统从底层数据库中获取数据存储到数据仓库中。OLAP服务器从数据仓库中抽取数据,提供给客户端使用,相关人员利用前端PC机上的客户软件,通过局域网访问数据仓库上的数据。

119243241.jpg

图2  系统逻辑结构

4  OLAP系统的实现

    一个完整的OLAP分析系统由以下几部分组成:提取、清洗数据组成数据仓库;根据需求利用OLAP引擎建立相应的OLAP立方体(也叫主题);使用前端开发工具访问立方体包含的对象和集合。

4.1 数据仓库层的详细设计

4.1.1 数据准备

    本系统是基于一个小型的钢筋销售企业的数据作为源数据的。它通过一定的供应商提供不同型号的钢筋,然后在卖给不同的客户。因此,在数据库中共有8个表,分别是Order定单信息,Order Details定单明细信息,Customer客户信息, Products产品信息, Categories产品类别信息Shipper发货信息,Supplies供应商信息,Employees员工信息。

4.1.2 建立NW_Mart数据仓库

    设计一个多维模型的四大步骤,如下:⑴ 定义OLAP的数据集市:包括使用星型模式或雪花模式。

    ⑵ 事实的选择:通过事实表的共有特性及四种常见样式来选择适当的事实种类。

    ⑶ 维的创建:需了解维的共同特性、维分层结构以及当维数据有变化时的解决方式。

    ⑷ 聚合体的设计:聚合体(Aggregation)为维复杂的查询提供了一个预先计算好的汇总来提高分析速度。

    在建立数据仓库的过程中,以Order及Order Details两个表的连接作为事实表的主轴,并建立NW_Mart的五个维表:Time_Dim、Customerv_Dim、Products_Dim、Employee_Dim及Shipper_Dim,它们各自都增加一个唯一值的代理键,并采用标识(Identity),如此可避免数据重复及Null的问题。

    下图给出了NW_Mart的星型结构示意图。

119243958.jpg

图3  NW_Mart的星型结构

4.1.3 建立OLAP NW_Mart的DTS包

    建立DTS包的目的是为了将底层数据库中的数据导入到NW_Mart数据仓库中。在包的设计中,建立不同的数据流加载过程,每一个数据流代表将数据库中的数据导入到一个维表中。在导入过程中,必须进行相应的格式转化,保证在数据仓库中的数据是以对分析人员有用的格式存在的,并且各个数据流的加载过程必须按一定的顺序进行。DTS包的设计如下图4所示。包设计完成时,通过包自带的检测工具来检查是否有错误,如检测成功过,就可进行执行包操作,当操作完成后,数据就成功的导入了建立的数据仓库中。

4.1.4 建立NW_Mart服务器

    多维数据模型是围绕中心主题组织的,该主题用事实表表示,事实是数值度量的,把它们看作数值,是因为我们想根据它们分析维之间的关系。

    建立NW_Mart服务器的过程如下:

    ⑴ 在Analysis Manager中建立NW_Mart数据库,设定其数据源是NW_Mart数据库。

    ⑵ 建立共享维度:包括产品_供应商、产品_类别、货运公司、客户_地理分布、时间_年半年度月日、时间_年季月日、时间_年季月星期、时间_年天、时间_年月、时间_年周、员工_年薪分布、员工_年薪分布。

11925885.jpg

图4   NW_Mart的DTS包的设计

    ⑶ 建立销售分析立方体:包括维度:时间_年季月日、时间_年半年度月日、时间_年天、时间_年周、时间_年月、客户_地理分布、员工_年龄分布、员工_年薪分布、产品_类别、产品_供应商;包括度量值:销售金额、销售数量和折扣;包括计算成员:海外市场销售百分比;设计它的存储过程为:MOLAP。

    (4)建立运费分析立方体:包括维度:货运公司、客户_地理分布、产品_供应商、时间_年季月日、产品_类别;包括度量值:销售数量、运费;包括计算成员:单元运费;设计它的存储过程为:ROLAP。

    ⑸ 建立销售运费分析立方体:包括维度:时间_年季月日、时间_年季月星期、时间_年半年度月日、时间_年天、时间_年周、时间_年月、客户_地理分布、员工_年龄分布、员工_年薪分布、产品_类别、产品_供应商、货运公司;包括度量值:销售金额、销售数量和折扣。

4.2  OLAP引擎层及前台的详细设计

    在本系统的实现过程中,通过使用微软的Excel中的透视表服务功能来创建本地立方体文件,使我们能够在OLAP服务出现异常的时候也能够实现对数据的分析,同时也可以用第三方控件来建立本地多维数据集。

    创建本地多维数据集最简单的方法就是使用OLAP Cube Wizard。它是作为Office 2000组成部分的Microsoft Excel的一个组件。利用Excel中的连接外部数据源技术与分析服务器连接,在根据向导中的提示选择数据源、选择立方体、针对某个立方体选择维度和度量值(可以选择其中的一部分也可以全选)。通过以上几个主要的步骤后,即可创建本地多维数据集了。

    对于前台的功能要求有以下几个方面:要能够连接后台数据库,将数据提取出来;要能够连接本地多维数据集,读取数据。然后对读取的数据进行分析处理,以得出相应的结论。对数据的处理包括:切片、切块(Dice)、下钻、上翻(Roll-up)和旋转(Rotate)等操作。同时也要能够给出数据的图表显示,以一种直观的方式将数据显示出来。下图就是前台显示数据的工作图。

119267250.jpg

图5  数据显示图

5  结论

    本文介绍了基于数据仓库的OLAP系统体系结构、实现过程及其应用方法。本文采用了三层开发模式来开发OLAP系统,因此它具有以下特点:

    ⑴ 数据采集过程以元数据为核心进行集成,提高了系统的灵活性和可维护性;

    ⑵ 从应用角度组织信息,建立了直观的多维数据模型,使用户能从多方面和多角度来观察企业的状态,了解企业的变化;

    ⑶ 实现了动态报表功能,满足了用户逐层、灵活地展现分析结果的需求,使管理人员逐步摆脱了对固定报表的依赖,节省了大量的人力和物力;

    ⑷ 采用的三层开发模式有助于减少服务器处理数据的负担,提高了用户查询数据的能力。

参考文献

[1] 王珊等.数据仓库技术与联机分析处理.科学出版社,1998

[2] 彭木根.数据仓库技术与实现.北京:电子工业出版社,2002

[3] 飞思科技产品研发中心.SQL Server 2000 OLAP服务设计与应用.北京:电子工业出版社,2002

[4]  Tony Bain等著;邵勇译.SQL Server 2000数据仓库与Analysis Servcies.北京:中国电力出版社,2002

[5]  Mike Gunderloy,Tim Sneath.SQL Server 开发指南——OLAP(联机分析处理).北京:电子工业出版社,2001

[6] Reed Jacobson.SQL Server 2000 Analysis Services学习指南.北京:机械工业出版社,2001

[7] 杨倩,邵伟民,徐忠健.OLAP中一种多维数据模型.计算机工程.2004,30(1):192-194

[8] 邱怀姗,朱群雄.基于MS Analysis Services的OLAP分析系统的设计与实现.北京化工大学学报.2004,31(1):103-107

[9] Thomas Thalhammer,Michael Schrefl,Mukesh Mohania.Active data warehouses: complementing OLAP with analysis rules.Data & Knowledge Engineering. 2001, 39:241-269

[10] Seok-Ju Chun,Chin-Wan Chung,Seok-Lyong Lee.Space-efficient cubes for OLAP range-sum queries.Decision Support Systems.2004,37:83-102