用IBM DWE数据仓库建立数据分析(作者:IT168 张光业 2007-12-24)

来源:互联网 发布:周杰伦 双截棍 知乎 编辑:程序博客网 时间:2024/06/14 19:14
概述
【IT168 技术文档】针对数据仓库、商业智能应用,IBM提供了全面的、业界领先的解决方案。软件方面,提供了集 成的、端到端的解决方案DWE (Data Warehouse Edition);硬件方面,IBM提出了Balanced Warehouse解决方案,它根据用户预计的数据仓库规模,为用户提供预先配置的、经过优化的、可以扩展的硬件配置方案,包括服务器的型号、配置,存储 的配置,网络的配置,可以为用户提供合理的硬件选型;在数据仓库模型方面,IBM提供了针对银行、电信、保险及零售业的数据仓库模型,可以为用户提供针对 行业应用的模板,加速行业应用建模。
本文,主要为大家介绍DWE (Data Warehouse Edition)解决方案,特别是如何利用DWE功能部件快速建立数据分析应用,以帮助大家快速掌握利用DWE开发分析应用的基本方法。

DWE软件包是一个集成的解决方案,它包括了实现一个数据仓库应用所需的各种功能部件,

包括:
 -用于数据抽取、转换、清洗、装载的软件 SQL Warehouse,它主要实现基于数据库的数据转换工作。
 - 用于构造多维数据模型的功能部件OLAP,它主要完成构建多维数据模型,并将多维数据模型保存到数据库中,使数据库成为真正的多维模型感知的数据库系统, 同时,可以完成不同分析工具之间的多维模型的元数据交换。另外,它还可以针对多维数据模型提供优化功能,通过提供建立数据汇总表的功能来优化数据分析效 率。
- 用于查询、报表及OLAP分析的前端展现工具Alphablox,它是一个基于J2EE架构的多维分析工具,主要定位于提供嵌入式的、可定制化的应用。用 户开发Alphablox应用,主要是开发一些jsp页面,同时嵌入Alphablox提供的用于多维分析的各种Blox,开发周期短,可定制能力强。
 -用于数据挖掘的功能部件Mining,它通过Modeling、Visualization及Scoring等功能实现数据挖掘模型的建模、可视化展现 及实时利用模型为新数据评分的功能。Mining功能部件提供了业界丰富的数据挖掘算法,并实现了将数据挖掘功能嵌入到工作流应用中,扩展了数据挖掘应用 的应用范围。
 -提供了数据仓库数据存储软件DB2,它提供了业界领先的数据可扩展能力,可以支持TB级海量数据仓库系统,并通过查询并行能力、优化器算法、MQT汇总表等方式来提高查询的效率。
 -提供了集成的、基于eclipse的数据仓库设计工具Design Studio,它可以实现数据仓库抽取流程的设计、挖掘模型的设计、多维分析建模。
 -提供了统一的、集成的数据仓库管理工具Admin Console,它是一个基于Web界面的管理工具,可以完成数据抽取流程的管理、调度,多维模型的管理及优化,挖掘模型的管理及前端分析工具Alphablox的管理。

    下边,我们通过一个简单的“销售分析”的例子来介绍一下如何利用DWE功能部件快速建立数据分析应用。

“销售分析”模型主要包括3个维度:

-Locations维度:地区维度,包括全国—省—城市三个层次;
-Times维度:时间维度,包括年—月—日三个层次;
-Products维度:产品维度,包括产品类别—产品两个层次;
事实表Fact::包括销售额及销售数量两个量度;
-------------------------------------------------------传说中的分割线-----------------------------------------------------------------------
在数据库中建立星型模型
    当定义好多维模型后,我们要在数据库中实现其物理模型。通常情况下,基于关系型多维分析往往采用星型模型或雪花型模型。这里,我们建立了一个简单的星型模型,如图:



    在DWE中,我们建议星型模型的事实表及维表之间要建立主外键关系,特别是对多维模型优化会起到重要作用。 

    我们首先创建一个数据库DWEOLAP,用于存储分析数据及多维模型,并在DWEOLAP中创建星型模型的表,如图:


-------------------------------------------------------传说中的分割线-----------------------------------------------------------------------
用SQL Warehouse 完成数据抽取、转换、装载工作
    当在DWEOLAP数据库中创建好星型模型后,下边就要完成数据抽取、转换、装载工作,我们这里通过DWE组件中的SQL Warehouse来完成。 

    采用SQL Warehouse来完成数据抽取、转换、装载工作的主要步骤包括:
1. 在Design Studio中创建数据设计项目,用来创建数据物理模型,在SQL Warehouse中,数据的抽取、转换是要针对物理模型来完成的。
2. 在Design Studio中创建数据仓库项目,并关联相应的数据设计项目,来指定相应的物理模型。SQL Warehouse设计数据的抽取、转换流程都是在数据仓库项目中完成的。
3. 在Design Studio中设计数据流程,完成数据的抽取、转换及装载工作。
4. 在Design Studio中设计控制流程,完成数据流程的控制。在SQL Warehouse中,ETL流程的调度、运行都是基于控制流程来完成的。
5. 在Design Studio生成数据仓库应用程序,为ETL流程的部署做准备。
6. 在Admin Console数据仓库管理工具中,部署ETL的控制流程,并实现ETL流程的调度及运行,即日常的运行工作。
下图,详细说明了上边的流程:



    SQL Warehouse提供GUI界面来完成ETL流程的设计及运行工作,我们在设计时,只需要鼠标的拖拽工作就可以完成大部分开发工作。SQL Warehouse中提供了大量的数据转换功能函数,使数据转换工作变得更见简单。下边图示列举了一些典型的数据转换功能函数:

    首先,我们在数据库资源管理器中创建一个数据库连接并连接数据库DWEOLAP,



    创建一个数据设计项目DWEOLAP,


    创建物理数据模型并通过反向工程获得DWEOLAP数据库模型,



    得到如下数据库模型,每一个模型对应一个数据库:

    下边创建数据仓库项目DWESQW,并关联数据设计项目DWEOLAP,



   

    在DWESQW项目中创建数据流locations_load,times_load,products_load,facts_load,


    当创建完数据流后,我们要在DWESQW项目中创建控制流dwe_ctrl,




    创建完相应的控制流后,在Design Studio中创建数据仓库应用程序,为部署做准备,


    在Admin Console中,部署数据仓库应用程序,并运行或调度相应的控制流,


    当dwe_ctrl控制流运行成功后,我们便将数据装载到了定义的星型模型的表中。
-------------------------------------------------------传说中的分割线-----------------------------------------------------------------------
三、通过OLAP功能部件建立多维分析模型

    下边,我们通过DWE提供的OLAP功能模块来建立多维分析模型。在DWE中,多维数据模型由Cube Model及相应的Cube组成。 

    Cube Model根据数据库底层的星型模型或雪花型模型为基础创建的,它包括:

 Facts, 对应星型模型中的事实表(Fact Table),它包含分析的量度(Measure)信息。度量数据通常分为可累加、半累加及不可累加三类,定义量度时应该指定其聚合方式。
 Dimension,对应星型模型中的维表(Dimension Table),Dimension需要定义维的层次(Level),每一个维的层次都可以包含若干个属性(Attribute)信息,这些属性可以是层键 值、描述信息(Descriptive)或相关信息(Relative)。同时,Dimension还需要定义维的层次结构(Hierarchy),它由 若干个维的层次按上钻或下钻的顺序构成。
 Join,定义事实及维之间连接关系。 

    Cube是基于Cube Model创建的多维立方体。前端分析工具,如Alphablox是针对特定Cube来进行多维分析的,它由Cube Model中的度量、维、维的层次结构组成。基于一个Cube Model可以创建多个Cube。 

    下边图示是DWE OLAP中的多维模型示意图: 




    在DWE中,多维数据模型是存储在关系数据库中的,这样,我们很容易在不同分析工具之间交换多维数据模型。另外,DWE还可以基于多维模型、数据库统计信息、数据采样等因素对多维分析进行优化,提供创建汇总表(MQT)的功能,进一步提高多维查询的效率。 

    下边的图示详细介绍了DWE OLAP中多维模型优化的基本策略: 

 

    下面我们来设计一个“销售分析”立方体模型。 

    在Design Studio中,我们展开DWEOLAP数据设计项目下边的数据库模型,在Administrator模式下边的OLAP对象文件夹中,来创建“销售分析”立方体模型(Cube Model), 


    在生成的“销售分析”立方体模型中,为量度定义聚合关系,为维度定义层及层次结构, 



    在DWE OLAP中,定义量度聚合关系, 


    我们对“销售额”及“销售数量”量度使用Sum聚集函数。 


    在DWE OLAP中,定义层次结构, 


    DWE OLAP中主要包含以下四种层次关系:

 -Balanced Hierarchy,平衡层次,
 -Ragged Hierarchy,未对齐层次,
 -Unbalanced Hierarchy,非平衡层次,
 -Network Hierarchy,网络层次,每一个成员有不只一个父亲。 

    我们对时间层次结构、产品层次结构及地区层次结构都采用平衡层次方式。 

    当创建好“销售分析”立方体模型后,我们来创建“销售分析”立方体(Cube), 

    在“销售分析”立方体中,我们使用“销售分析”立方体模型中定义的“销售额”及“销售数量”作为量度,使用时间、产品、地区维度及相应的层次结构作为“销售分析”立方体中的维度。
最终生成的“销售分析”立方体如下图: 



    下面,我们要分析立方体模型的正确性, 



    当验证立方体模型的正确性后,我们需要将“销售分析”立方体模型部署到DWEOLAP数据库中, 



    成功部署之后,在数据库资源管理器中可以看到已经部署到DWEOLAP数据库中的“销售分析”模型, 



    我们可以在数据库资源管理器中,为多维模型进行优化,创建MQT表, 


    在优化过程中,我们要选择合适的查询类型, 


    我们选择了“向下钻取”查询类型,之后,系统自动生成MQT创建及数据刷新的脚本, 

    运行上述MQT创建脚本,我们便在DWEOLAP数据库中创建了相应的MQT表来优化查询。 
    同时,我们还可以通过Admin Console来对多维模型进行管理,


-------------------------------------------------------传说中的分割线-----------------------------------------------------------------------
四、通过Alphablox快速创建多维分析应用

    当定义好多维数据模型及相应立方体后,我们便可以通过Alphablox来快速创建一个多维查询应用。
Alphablox是一个前端分析软件,它同其他传统的前端分析工具一个最大的不同,它是基于J2EE架构,因此,非常容易定制化。它只提供BS结构,主要定位于提供嵌入式的、可定制化的应用。 
    Alphablox采用三层架构,如下图:


 数据源支持DB2、Oracle、SQL Server、Sybase等主流关系型数据库;Essbase、MS Analysis Server、DB2 OLAP Server等多维数据库及DWE OLAP。
 应用服务器支持Websphere Application Server、Weblogic及Tomcat。 

    Alphablox应用开发主要是写JSP以及一些必要的Java代码。Alphablox软件提供了一系列预先定制的、用于多维分析应用的Blox,这 些Blox是一些JavaBean,用户编写分析应用时,主要就是通过在JSP页面中嵌入这些Blox来完成的。
Alphablox提供的Blox主要包括下面几类:
 Infrastructure,主要用于对Alphablox元数据进行管理。
 Data Access,主要用于对数据源进行访问,获取分析数据。
 Presentation,主要用于前端数据分析、处理及展现。 


    在JSP页面中,我们是通过Taglib来引用这些Blox的,Alphablox主要提供了以下几个Taglib: 


    在开发Alphablox应用时,JSP页面的基本编写框架如下所示: 



    下边,我们就使用Alphablox来创建一个简单的多维查询应用。 

    首先,通过Alphablox管理界面来创建关系数据源DWEOLAP, 


    接下来,创建“Sales Analysis”Alphablox立方体,并通过“Enable DB2 Cube View Settings”功能将我们在前边DWE OLAP中创建的”销售分析“立方体模型及”销售分析“立方体导入到Alphablox中,如下图: 

    下面,我们创建 “dwecube”Alphablox Cube Server Adapter数据源,用于后面Bloxbuilder应用程序进行多维查询工作, 

    验证数据源是否可以连接成功, 

    当创建好“Sales Analysis” Alphablox立方体后,我们要在General下边的Runtime Management文件夹中启动“Sales Analysis”Alphablox立方体, 




    下边,我们就可以创建自己的多维分析应用了。在本文的例子中,我们创建“SalesAnalysis”Alphablox应用程序,并将Home URL指定为index.jsp, 


    创建好的“SalesAnalysis”应用程序,以SalesAnalysis.ear的形式保存在Alphablox应用程序目录下,如: C:/Program Files/IBM/dwe/Alphablox/installableApps/SalesAnalysis.ear。
我们需要通过WAS(Websphere Application Server)的管理控制台将该应用部署到WAS中, 

    当将SalesAnalysis应用部署到WAS后,要启动该应用, 

    接下来,我们要开始编写“SalesAnalysis”应用程序中的index.jsp文件,来提供多维查询功能。通常,index.jsp页面需要我们 自己写代码来完成,我们需要在页面中引用各种blox,有些blox代码比较长,特别是数据查询代码,有时写起来也比较烦琐,为了加速Alphablox 应用开发,Alphablox提供了一个可视化的、快速开发blox应用的Query Builder程序,来简化Alphablox应用开发。
我们就通过Query Builder来构造一个多维查询, 



    在Query Builder中,连接我们创建的Alphablox Cube Adapter数据源“dwecube”, 



    并构造我们需要的多维查询, 


    通过点击“生成Blox”按钮,将我们在Query Builder工具中定义好的多维查询,自动生成相应的Blox代码, 



    并将该代码拷贝到我们index.jsp文件中blox代码相对应的位置上,如图: 


    将我们编写好的index.jsp文件拷贝到WAS相应下的目录下,如,
C:/Program Files/IBM/dwe/appServer/profiles/default/installedApps/IBM-99LKCYANode01Cell/SalesAnalysis.ear/SalesAnalysis.war/index.jsp 
    这样,我们就可以通过浏览器来调用我们的应用程序了,并且以此为基础,来构建更复杂的查询分析应用。 



    另外,Alphablox支持MDX查询分析语言,通过MDX,我们还可以实现一些常见的分析功能,如同比、环比、移动平均值、期初分析、期末分析等。 

    下边代码实现了同比分析, 


    下边代码实现了环比分析, 


    下边代码实现了条件查询的功能,

------------------------- ------------------------------传说中的分割线----------------------------------------------------------------------
通过上述的四个部分工作,我们实现了一个最基本的数据查询分析应用,通过它,我们可以基本了解使用DWE来快速开发数据查询分析应用的基本方法及步骤,为进一步开发更复杂的数据分析应用打下坚实的基础。
原创粉丝点击