用IBMDWE数据仓库建立数据分析针对数据仓库、商业智能应用,IBM提供了全面的、业界领先的解决方案。软件方面,提供了集成的、端到端的解决方案DWE(DataWarehouseEdition);硬件方面,IBM提出了BalancedWarehouse解决方案,它根据用户预计的数据仓库规模,为用户提供预先配置的、经过优化的、可以扩展的硬件配置方案,包括服务器的型号、配置,存储的配置,网络的配置,可以为用户提供合理的硬件选型;在数据仓库模型方面,IBM提供了针对银行、电信、保险及零售业的数据仓库模型,可以为用户提供针对行业应用的模板,加速行业应用建模。本文,主要为大家介绍DWE(DataWarehouseEdition)解决方案,特别是如何利用DWE功能部件快速建立数据分析应用,以帮助大家快速掌握利用DWE开发分析应用的基本方法。DWE软件包是一个集成的解决方案,它包括了实现一个数据仓库应用所需的各种功能部件,包括:-用于数据抽取、转换、清洗、装载的软件SQLWarehouse,它主要实现基于数据库的数据转换工作。-用于构造多维数据模型的功能部件OLAP,它主要完成构建多维数据模型,并将多维数据模型保存到数据库中,使数据库成为真正的多维模型感知的数据库系统,同时,可以完成不同分析工具之间的多维模型的元数据交换。另外,它还可以针对多维数据模型提供优化功能,通过提供建立数据汇总表的功能来优化数据分析效率。-用于查询、报表及OLAP分析的前端展现工具Alphablox,它是一个基于J2EE架构的多维分析工具,主要定位于提供嵌入式的、可定制化的应用。用户开发Alphablox应用,主要是开发一些jsp页面,同时嵌入Alphablox提供的用于多维分析的各种Blox,开发周期短,可定制能力强。-用于数据挖掘的功能部件Mining,它通过Modeling、Visualization及Scoring等功能实现数据挖掘模型的建模、可视化展现及实时利用模型为新数据评分的功能。Mining功能部件提供了业界丰富的数据挖掘算法,并实现了将数据挖掘功能嵌入到工作流应用中,扩展了数据挖掘应用的应用范围。-提供了数据仓库数据存储软件DB2,它提供了业界领先的数据可扩展能力,可以支持TB级海量数据仓库系统,并通过查询并行能力、优化器算法、MQT汇总表等方式来提高查询的效率。-提供了集成的、基于eclipse的数据仓库设计工具DesignStudio,它可以实现数据仓库抽取流程的设计、挖掘模型的设计、多维分析建模。-提供了统一的、集成的数据仓库管理工具AdminConsole,它是一个基于Web界面的管理工具,可以完成数据抽取流程的管理、调度,多维模型的管理及优化,挖掘模型的管理及前端分析工具Alphablox的管理。下边,我们通过一个简单的“销售分析”的例子来介绍一下如何利用DWE功能部件快速建立数据分析应用。“销售分析”模型主要包括3个维度:-Locations维度:地区维度,包括全国—省—城市三个层次;-Times维度:时间维度,包括年—月—日三个层次;-Products维度:产品维度,包括产品类别—产品两个层次;事实表Fact::包括销售额及销售数量两个量度;一、在数据库中建立星型模型当定义好多维模型后,我们要在数据库中实现其物理模型。通常情况下,基于关系型多维分析往往采用星型模型或雪花型模型。这里,我们建立了一个简单的星型模型,如图:在DWE中,我们建议星型模型的事实表及维表之间要建立主外键关系,特别是对多维模型优化会起到重要作用。我们首先创建一个数据库DWEOLAP,用于存储分析数据及多维模型,并在DWEOLAP中创建星型模型的表,如图:二、用SQLWarehouse完成数据抽取、转换、装载工作当在DWEOLAP数据库中创建好星型模型后,下边就要完成数据抽取、转换、装载工作,我们这里通过DWE组件中的SQLWarehouse来完成。采用SQLWarehouse来完成数据抽取、转换、装载工作的主要步骤包括:1.在DesignStudio中创建数据设计项目,用来创建数据物理模型,在SQLWarehouse中,数据的抽取、转换是要针对物理模型来完成的。2.在DesignStudio中创建数据仓库项目,并关联相应的数据设计项目,来指定相应的物理模型。SQLWarehouse设计数据的抽取、转换流程都是在数据仓库项目中完成的。3.在DesignStudio中设计数据流程,完成数据的抽取、转换及装载工作。4.在DesignStudio中设计控制流程,完成数据流程的控制。在SQLWarehouse中,ETL流程的调度、运行都是基于控制流程来完成的。5.在DesignStudio生成数据仓库应用程序,为ETL流程的部署做准备。6.在AdminConsole数据仓库管理工具中,部署ETL的控制流程,并实现ETL流程的调度及运行,即日常的运行工作。下图,详细说明了上边的流程:SQLWarehouse提供GUI界面来完成ETL流程的设计及运行工作,我们在设计时,只需要鼠标的拖拽工作就可以完成大部分开发工作。SQLWarehouse中提供了大量的数据转换功能函数,使数据转换工作变得更见简单。下边图示列举了一些典型的数据转换功能函数:首先,我们在数据库资源管理器中创建一个数据库连接并连接数据库DWEOLAP,创建一个数据设计项目DWEOLAP,创建物理数据模型并通过反向工程获得DWEOLAP数据库模型,得到如下数据库模型,每一个模型对应一个数据库:下边创建数据仓库项目DWESQW,并关联数据设计项目DWEOLAP,在DWESQW项目中创建数据流locations_load,times_load,products_load,facts_load,当创建完数据流后,我们要在DWESQW项目中创建控制流dwe_ctrl,创建完相应的控制流后,在DesignStudio中创建数据仓库应用程序,为部署做准备,在AdminConsole中,部署数据仓库应用程序,并运行或调度相应的控制流,当dwe_ctrl控制流运行成功后,我们便将数据装载到了定义的星型模型的表中。三、通过OLAP功能部件建立多维分析模型下边,我们通过DWE提供的OLAP功能模块来建立多维分析模型。在DWE中,多维数据模型由CubeModel及相应的Cube组成。CubeModel根据数据库底层的星型模型或雪花型模型为基础创建的,它包括:Facts,对应星型模型中的事实表(FactTable),它包含分析的量度(Measure)信息。度量数据通常分为可累加、半累加及不可累加三类,定义量度时应该指定其聚合方式。Dimension,对应星型模型中的维表(DimensionTable),Dimension需要定义维的层次(Level),每一个维的层次都可以包含若干个属性(Attribute)信息,这些属性可以是层键值、描述信息(Descriptive)或相关信息(Relative)。同时,Dimension还需要定义维的层次结构(Hierarchy),它由若干个维的层次按上钻或下钻的顺序构成。Join,定义事实及维之间连接关系。Cube是基于CubeModel创建的多维立方体。前端分析工具,如Alphablox是针对特定Cube来进行多维分析的,它由CubeModel中的度量、维、维的层次结构组成。基于一个CubeModel可以创建多个Cube。下边图示是DWEOLAP中的多维模型示意图:在DWE中,多维数据模型是存储在关系数据库中的,这样,我们很容易在不同分析工具之间交换多维数据模型。另外,DWE还可以基于多维模型、数据库统计信息、数据采样等因素对多维分析进行优化,提供创建汇总表(MQT)的功能,进一步提高多维查询的效率。下边的图示详细介绍了DWEOLAP中多维模型优化的基本策略:下面我们来设计一个“销售分析”立方体模型。在DesignStudio中,我们展开DWEOLAP数据设计项目下边的数据库模型,在Administrator模式下边的OLAP对象文件夹中,来创建“销售分析”立方体模型(CubeModel),在生成的“销售分析”立方体模型中,为量度定义聚合关系,为维度定义层及层次结构,在DWEOLAP中,定义量度聚合关系,我们对“销售额”及“销售数量”量度使用Sum聚集函数。在DWEOLAP中,定义层次结构,DWEOLAP中主要包含以下四种层次关系:-BalancedHierarchy,平衡层次,-RaggedHierarchy,未对齐层次,-UnbalancedHierarchy,非平衡层次,-NetworkHierarchy,网络层次,每一个成员有不只一个父亲。我们对时间层次结构、产品层次结构及地区层次结构都采用平衡层次方式。当创建好“销售分析”立方体模型后,我们来创建“销售分析”立方体(Cube),在“销售分析”立方体中,我们使用“销售分析”立方体模型中定义的“销售额”及“销售数量”作为量度,使用时间、产品、地区维度及相应的层次结构作为“销售分析”立方体中的维度。最终生成的“销售分析”立方体如下图:下面,我们要分析立方体模型的正确性,当验证立方体模型的正确性后,我们需要将“销售分析”立方体模型部署到DWEOLAP数据库中,成功部署之后,在数据库资源管理器中可以看到已经部署到DWEOLAP数据库中的“销售分析”模型,我们可以在数据库资源管理器中,为多维模型进行优化,创建MQT表,在优化过程中,我们要选择合适的查询类型,我们选择了“向下钻取”查询类型,之后,系统自动生成MQT创建及数据刷新的脚本,运行上述MQT创建脚本,我们便在DWEOLAP数据库中创建了相应的MQT表来优化查询。同时,我们还可以通过AdminConsole来对多维模型进行管理,四、通过Alphablox快速创建多维分析应用当定义好多维数据模型及相应立方体后,我们便可以通过Alphablox来快速创建一个多维查询应用。Alphablox是一个前端分析软件,它同其他传统的前端分析工具一个最大的不同,它是基于J2EE架构,因此,非常容易定制化。它只提供BS结构,主要定位于提供嵌入式的、可定制化的应用。Alphablox采用三层架构,如下图:数据源支持DB2、Oracle、SQLServer、Sybase等主流关系型数据库;Essbase、MSAnalysisServer、DB2OLAPServer等多维数据库及DWEOLAP。应用服务器支持WebsphereApplicationServer、Weblogic及Tomcat。Alphablox应用开发主要是写JSP以及一些必要的Java代码。Alphablox软件提供了一系列预先定制的、用于多维分析应用的Blox,这些Blox是一些JavaBean,用户编写分析应用时,主要就是通过在JSP页面中嵌入这些Blox来完成的。Alphablox提供的Blox主要包括下面几类:Infrastructure,主要用于对Alphablox元数据进行管理。DataAccess,主要用于对数据源进行访问,获取分析数据。Presentation,主要用于前端数据分析、处理及展现。在JSP页面中,我们是通过Taglib来引用这些Blox的,Alphablox主要提供了以下几个Taglib:在开发Alphablox应用时,JSP页面的基本编写框架如下所示:下边,我们就使用Alphablox来创建一个简单的多维查询应用。首先,通过Alphablox管理界面来创建关系数据源DWEOLAP,接下来,创建“SalesAnalysis”Alphablox立方体,并通过“EnableDB2CubeViewSettings”功能将我们在前边DWEOLAP中创建的”销售分析“立方体模型及”销售分析“立方体导入到Alphablox中,如下图:下面,我们创建“dwecube”AlphabloxCubeServerAdapter数据源,用于后面Bloxbuilder应用程序进行多维查询工作,验证数