专注于互联网--专注于架构

最新标签
网站地图
文章索引
Rss订阅

首页 »编程综合 » 在 InfoSphere Warehouse V9.7 中进行多维建模的最佳实现 »正文

在 InfoSphere Warehouse V9.7 中进行多维建模的最佳实现

来源: 发布时间:星期四, 2009年12月17日 浏览:0次 评论:0
  概要

  本文主要通过在 InfoSphere Warehouse V9.7(以下简称 ISW V9.7)中从创建数据仓库数据模型基于数据模型创建多维对象同时使用 ISW V9.7 Design Studio 中多维建模相关工具完善立方体模型立方体共享维和虚拟立方体等多维对象同时对于多维元数据立方体安全定义维成员浏览等进行简单介绍从而使读者可以使用 ISW V9.7 熟练快速地完成多维建模、调试及部署等操作

  由于和 DWE V9.5 相比ISW V9.7 在多维对象进行了许多调整本文在介绍多维建模过程中对于调整比较大对象进行介绍以帮助读者通过本文更好理解多维对象以及多维建模在 V9.7 中改变对于有移植需求读者在 ISW V9.7 中多维对象移植需要通过元数据文件(metadata file)从 V9.5 移植到 V9.7 中由于本文主要关注于 ISW V9.7 中多维对象建模对移植不再赘述

  本系列文章是用数据库可以在产品安装目录下找到具体路径可以参考如下:

 Windows: C:\Program Files\IBM\ISWarehouse\samples\GSDB 
 Linux: /opt/IBM/ISWarehouse/samples/GSDB 


  有关数据库创建详细步骤可以参考 "DB2 信息中心" 本文不再赘述

  前提条件

  ISW V9.7 Design Studio 和 ISW V9.7 Server 已经正确安装同时元数据库也通过 ISW V9.7 Server 安装在 DB2 服务器中创建完成默认元数据库名为 DWECTRL

  用户对数据仓库多维建模有个基本了解并且最好对 ISW 或者 ISW 前身 DWE 产品结构有个了解

  ISW V9.7 Server 安装服务器中包含元数据库 DB2 例子已经启动

  Design Studio 所在客户机可以访问 Server 所在服务器

  本文最佳练习基于 Windows 平台进行介绍截图都截自 Windows XP SP2.

  启动 InfoSphere Warehouse Design Studio:

  在 ISW V9.7 Design Studio 所在客户机单击菜单“开始 -> 所有 ->IBM InfoSphere Warehouse->ISWCOPY01->Design Studio”启动 Design Studio

  选择默认 Workspace 或者通过浏览目录指定 Workspace 启动 Design Studio.

  创建物理设计工程

  1. Design Studio 启动默认工作视图为“Data Warehousing”视图如果 Design Studio 启动后默认视图不是“Data Warehousing”视图则需要通过点击菜单“Windows->Open Perspective->Others”在“Open Perspective”对话框中选择“Data Warehousing (default)”从而切换到“Data Warehousing”视图


图 1. 数据仓库透视图


  查看原图(大图)

  2. 通过菜单“File->New->Data Design Project (OLAP)”创建物理设计工程指定工程名称本文所有操作都在工程“OLAPDemo”下进行操作

  创建数据仓库物理模型(Physical Data Model)

  在 Design Studio 中集成了 InfoSphere Data Architecture简称 IDA( 原 Rational Data Architecture简称 RDA)物理数据模型创建完全使用 IDA 完成我们可以通过两种方式创建物理数据模型:从模版中创建物理数据模型 从已有数据库连接或者已有 DDL 中通过反向工程创建物理数据模型

  前种方式需要用户自己完成数据模型定义数据库模式数据表表约束索引等由于本文旨在帮助读者更好完成多维建模对数据模型设计本文不再赘述如果读者需要了解如何创建数据模型可参考 IDA 或者 RDA 相关指导文档

  后种方式则可以通过已有数据模型直接导入到数据设计工程中供用户进行更新或者直接被用来进行多维对象建模

  注意:如果需要通过反向工程从已有数据库连接中创建物理数据模型则需要在创建模型的前在“ Data Source Explorer ”中连接要进行多维建模数据库本文使用 GSDB 作为多维建模数据库

  1. 单击菜单“File->New->Physical Data Model”打开物理数据模型创建向导

  2. 设置物理数据模型相关属性:

  目标文件夹: /OLAPDemo

  文件名称: Database Model

  数据库: DB2 for Linux, UNIX, and Windows

  版本: V9.7

  3. 选择“Create from template”单击“Finish”完成从模板创建物理数据模型

  选择“Create from reverse engineering”单击“Next”


图 2. 物理数据模型创建向导 1


  查看原图(大图)

  3. 由于我们选择从数据库“GSDB”进行物理模型反向工程创建选择“Database”并且单击“Next”


图 3. 物理数据模型创建向导 2


  查看原图(大图)

  4. 在“Data Source Explorer”中已经连接数据库 GSDB 情况下我们选择“GSDB”并且单击“Next”


图 4. 物理数据模型创建向导 3


  查看原图(大图)

  5. 在接下来向导中我们选择需要到处数据库模式我们把所有以“GOSALES”开头模式全部选上并且单击“Next”


图 5. 物理数据模型创建向导 4


  查看原图(大图)

  6. 接下来我们选择要导出所选中模式中那些数据库对象我们选择所有对象并且单击“Finish”完成从反向工程对物理数据模型创建


图 6. 物理数据模型创建向导 5


  查看原图(大图)

  创建立方体模型(Cube Model)

  在 ISW V9.7 中立方体模型创建向导得到了很大程度加强立方体模型向导可以通过数据模型定义帮助用户识别事实表最佳候选并通过识别物理模型中约束定义最终生成个完整立方体模型

  由于在 GSDB 中已经定义了相关约束我们将略过对于物理数据模型约束定义如果用户数据仓库物理模型中没有定义相关约束则需要在数据设计工程中完成约束定义再继续下面立方体模型创建

  接下来我们就来通过立方体模型向导基于 GSDB 创建立方体模型

  1. 我们在“Data Project Explorer”中右击“OLAPDemo->Data Models->Database Model.dbm->GSDB->OLAP Objects”在弹出菜单中选择“Add Cube Model”


图 7. 添加立方体模型


  查看原图(大图)

  2. 在出现立方体模型向导中我们可以看到我们在创建物理数据模型时候导出所有模式(GOSALESGOSALESCT GOSALESDW GOSALESHR GOSALESMR GOSALESRT)以及这些模式数据库对象如表视图和别名等

  选择“Show _disibledevent=>

  查看原图(大图)

  由于 ISW V9.7 Server 不支持多事实表多维模型所以在立方体模型向导中事实表只能选择当用户选择多个时候立方体模型向导将阻止用户创建立方体模型如果用户数据仓库中事实表需要从多个表中提取数据则需要用户通过创建视图来创建立方体模型以达到支持多个事实表效果

  3. 在接下来立方体模型创建向导中我们可以看到通过向导生成立方体模型整理总结该立方体模型基于用户选择事实表生成立方体模型中事实对象通过发掘数据模型中事实表约束定义从而找到相应维表生成立方体模型中维度同时生成事实对象相关属性和度量对于雪花模型立方体模型向导可以把跟主维表关联其他维表通过主外键添加到相同维度中对于维度立方体模型会对该维度中个维表创建个层(Level)每个维度创建个层次(Hierarchy)包含所有立方体模型向导会在立方体模型中生成个立方体(Cube)包含事实和所有层次

  每个维度会生成个事实维度连接(Fact-Dimension Join)连接会指向事实表和主维表中相应外键和主键如果是雪花模型些维度中又会生成相应维至维连接(Dimension- Dimension Join)从而将该维度中所有维表通过维至维连接连接起来


图 9. 重命名多维对象


  查看原图(大图)

  由于生成多维对象命名大多数来自关系型数据表表名或者列名我们可以在立方体模型整理总结中通过双击或者 F2 键对选中多维对象进行重命名我们这里不做任何修改单击“Finish”完成立方体模型向导对于立方体模型创建

  注:如果在物理数据模型中没有约束定义用户也可以自己完成所有多维对象定义但是建议用户在完成物理数据模型中完成约束定义从而可以通过立方体模型向导加速多维模型设计和开发

  更新立方体模型

  通过立方体模型向导我们已经得到了个完整有效立方体模型在 ISW V9.7 数据设计浏览器中我们可以看到生成立方体模型不再附属于某模式而是附属于某数据库在 Design Studio 中立方体模型在物理数据模型中路径为“数据库 ->OLAP 对象 ->[ 立方体模型 ]”相比较 V9.5 中立方体模型路径“数据库 -> 模式 ->OLAP 对象 -> 立方体模型 ->[ 立方体模型 ]”立方体模型在 V9.7 中调整使得立方体模型设计在同数据库中可以跨越区别模式更加合理

  所以通过立方体模型向导创建立方体模型最终路径为:“OLAPDemo->Data Models->Database Model.dbm->GSDB->OLAP Objects-> SLS_SALES_FACT”


图 10. 更新后立方体模型


  查看原图(大图)

  更新事实

  通过立方体模型向导事实表中外键会添加为事实对象中属性通常不需要用户进行修改而除外键的外其他列都会被添加为事实中度量用户需要根据实际应用需要添加修改或删除事实中度量下面将对区别度量进行添加:

  添加计算度量(Calculated Measure):由于通过立方体模型向导生成度量都是直接取自事实表中如果用户需要对现有度量或者属性或者列进行数学运算从而得到个定制度量则可以通过添加计算度量来实现例如我们想定义个度量可以方便现实毛利占总销售比例则在事实对象中添加个计算度量 GrossProfitPercentage在“OLAP SQL Expression Builder”中指定计算度量表达式为“@Measure(GROSS_MARGIN) / @Measure(SALE_TOTAL)”

  添加 MDX 计算度量(MDX Calculated Measure):我们可以在事实对象中添加 MDX 计算度量MDX 计算度量和计算度量相比MDX 计算度量可以使用现有 MDX 相关进行定义在运行时MDX 计算度量会交由 Cube Server 进行解析而计算度量会交由数据库进行数学运算例如我们需要在度量中获取零售商位置默认值则我们可以通过 MDX DEFAULTMEMBER 从零售商维度中获取MDX 表达式为: “[SLS_RTL_DIM].[RETAILER_SITE_KEY].DEFAULTMEMBER”对定义 MDX 计算度量命名为 [MDX Default Retailer Site]

  设置默认度量:普通度量计算度量和 MDX 计算度量都可以做为事实默认度量我们在这里设置度量“SALE_TOTAL”作为默认度量右键“SALE_TOTAL”在弹出菜单中选择“Set as default”

  更新维度

  在 V9.7 中随着容器模型引入在 Design Studio 中允许用户定义私有维这样就使得立方体模型设计过程中保持了很好灵活性和封装性同时在 V9.7 中对于共享维保留延续了 V9.5 中维度在区别立方体模型的间共享从而可以提高用户开发高效性如果多维模型是在 V9.5 中设计那么所有维度默认为共享维通过多为模型元文件进行移植时在 V9.7 中得到维度仍然为共享维

  在 V9.7 中用户可以把私有维进行共享但是共享维不能改变为私有维同时由于共享维特殊性如果用户在立方体模型中对共享维进行修改那么所做修改对所有共享该维立方体模型均可见共享维更新会影响到已有立方体模型和立方体

  通过立方体模型向导生成维度有两种:规则维和时间维如果维表中有表名中包含“time”则通过该维表生成维度将被自动申明为事件维通过其他维表生成维度则会申明为规则维

  在本节我们通过对维度“SLS_PRODUCT_DIM”和“GO_TIME_DIM”进行更新来看在 Design Studio 中如何编辑维度

  添加属性:我们添加属性以供维层次使用直接将列“GOSALESDW ->GO_TIME_DIM->CURRENT_YEAR”添加为属性从而得到属性“CURRENT_YEAR (GO_TIME_DIM)”添加属性“CURRENT_MONTH (GO_TIME_DIM)”属性指向已有表列“GOSALESDW ->GO_TIME_DIM-> CURRENT_MONTH”

  更新层:重命名层“PRODUCT_BRAND_CODE”为 “Level_Product_Brand”添加列 “GOSALESDW->SLS_PRODUCT_BRAND_LOOKUP->PRODUCT_BRAND_TC”作为维度属性在层 “Level_Product_Brand”相关属性中添加属性“PRODUCT_BRAND_TC (SLS_PRODUCT_BRAND_LOOKUP)”到相关属性中并制定为默认属性这样在用户查询并钻取到 “Level_Product_Brand”时会通过默认属性显示相应繁体中文名称

  添加层:在维度“GO_TIME_DIM”中只有 Day 和 Quarter 两层我们通过添加层来完善该维度层次结构现在我们通过右键“GO_TIME_DIM->Levels”选择“Add Level”打开层创建向导输入层名称“Year”选择其类型为“Time or Date”中“Years”我们添加属性“CURRENT_YEAR (GO_TIME_DIM)”作为层关键属性添加属性“CURRENT_YEAR (GO_TIME_DIM)”作为层相关属性和默认属性我们指定属性“CURRENT_YEAR (GO_TIME_DIM)”顺序为“1”排序为降序“Descending”单击完成相同顺序我们添加层“Month”类型为“Time or Date”中“Months”关键属性为“CURRENT_MONTH (GO_TIME_DIM)”相关属性和默认属性为“CURRENT_MONTH (GO_TIME_DIM)”指定属性“CURRENT_MONTH (GO_TIME_DIM)”顺序为“1”排序方式为升序“Ascending”

  更新层次结构:我们在完成层添加的后需要将层添加到层次结构 “GO_TIME_DIM”中打开层次结构“GO_TIME_DIM”属性页面在“Levels”下添加层“Year”和“Month”同时调整层顺序为“Year”“QUARTER_KEY”“Month”和“DAY_KEY”

标签:
0

相关文章

读者评论

发表评论

  • 昵称:
  • 内容: