91
How to Build Data Warehouse 如如如如如如如如 JasonFu | Master Candidate School of Software Engineering, South China University of Technology Supervised by Professor Jian Chen

How to build data warehouse

Embed Size (px)

DESCRIPTION

 

Citation preview

Page 1: How to build data warehouse

How to Build Data Warehouse

• 如何构建数据仓库

JasonFu | Master Candidate

School of Software Engineering, South China University of Technology

Supervised by Professor Jian Chen

Page 2: How to build data warehouse

Jason Fu(SCUT) 2012-11-19

Outline

1. 为什么要建数据仓库2. 数据仓库是什么3. 开发过程4. 开发实例5. Q&A

2/90

Page 3: How to build data warehouse

Jason Fu(SCUT) 2012-11-19

Outline

1. 为什么要建数据仓库2. 数据仓库是什么3. 开发过程4. 开发实例5. Q&A

3/90

Page 4: How to build data warehouse

Jason Fu(SCUT) 2012-11-19

1. 为什么要建数据仓库

4/90

Page 5: How to build data warehouse

Jason Fu(SCUT) 2012-11-19

1. 为什么要建数据仓库

充分利用已有的历史业务数据,进行集中的分析和知识提取,从中获取决策支持。

决策高层希望直接进行数据分析,而无需专业数据分析人员的协助,这就要求系统提供丰富、灵活和易用的分析功能。

决策支持处理需要相对稳定的数据,而已有的事务型数据库总是在动态变化。

已有的事务型数据库系统专注于各种业务处理,且数据分散,无法为集中的数据分析提供良好的支持。

5/90

Page 6: How to build data warehouse

Jason Fu(SCUT) 2012-11-19

Outline

1. 为什么要建数据仓库2. 数据仓库是什么3. 开发过程4. 开发实例5. Q&A

6/90

Page 7: How to build data warehouse

Jason Fu(SCUT) 2012-11-19

2. 数据仓库是什么

Warehouse ?

Why not ‘Factory’?

数据仓库本身并不“生产”任何数据,同时自身也不需要“消费”任何的数据,数据来源于外部,并且开放给外部应用。

7/90

Page 8: How to build data warehouse

Jason Fu(SCUT) 2012-11-19

2. 数据仓库是什么

DEFINITION

数据仓库( Data Warehouse )是一个面向

主题的( Subject Oriented )、集成的

( Integrated )、相对稳定的( Non-

Volatile )、反映历史变化( Time

Variant )的数据集合,用于支持管理决策

(Decision Making Support) 。 William H. Inmon"The Father of Data Warehousing"

8/90

Page 9: How to build data warehouse

Jason Fu(SCUT) 2012-11-19

2. 数据仓库是什么:特点

面向主题

集成的

相对稳定的

反映历史变化

9/90

Page 10: How to build data warehouse

Jason Fu(SCUT) 2012-11-19

2. 数据仓库是什么:特点

面向主题

操作型数据库的数据组织面向事务处理任务,各个业务系统之间各自分离,

而数据仓库中的数据是按照一定的主题域进行组织的

主题是与传统数据库的面向应用相对应的,是一个抽象概念,是在较高层

次上将企业信息系统中的数据综合、归类并进行分析利用的抽象

每一个主题对应一个宏观的分析领域

e.g. :商品,销售,客户关系,…

10/90

Page 11: How to build data warehouse

Jason Fu(SCUT) 2012-11-19

2. 数据仓库是什么:特点

面向主题

集成的

相对稳定的

反映历史变化

11/90

Page 12: How to build data warehouse

Jason Fu(SCUT) 2012-11-19

2. 数据仓库是什么:特点

集成的

对原有分散的数据库数据进行抽取、清理

系统加工、汇总和整理

消除源数据中的不一致性

确保数据仓库内的信息是关于整个企业的一致的全局信息

12/90

Page 13: How to build data warehouse

Jason Fu(SCUT) 2012-11-19

2. 数据仓库是什么:特点

面向主题

集成的

相对稳定的

反映历史变化

13/90

Page 14: How to build data warehouse

Jason Fu(SCUT) 2012-11-19

2. 数据仓库是什么:特点

相对稳定的

供企业决策分析之用,所涉及的数据操作主要是数据查询

数据一旦进入数据仓库,一般情况下将被长期保留

大量的查询操作,修改和删除操作很少

定期的加载、刷新

14/90

Page 15: How to build data warehouse

Jason Fu(SCUT) 2012-11-19

2. 数据仓库是什么:特点

面向主题

集成的

相对稳定的

反映历史变化

15/90

Page 16: How to build data warehouse

Jason Fu(SCUT) 2012-11-19

2. 数据仓库是什么:特点

反映历史变化

包含历史信息,系统记录了企业从过去某一时间点 ( 如开始应用数

据仓库的时点 ) 到目前的各个阶段的信息

对企业的发展历程和未来趋势做出定量分析和预测

16/90

Page 17: How to build data warehouse

Jason Fu(SCUT) 2012-11-19

2. 数据仓库是什么

DW VS. DB

特性 DW DB

定位 数据分析 事务处理

DB 设计 星型模型,面向主题 E-R 模型,面向应用

数据 历史、具有时间跨度 当前、最新的

汇总 汇总、一致的 原始、细节的

视图 总体、多维的 详细、关系的

存取 读(稳定) 读 / 写(易变)

存放记录 记录集合 少量记录

DB 规模 TB GB

工作单位 复杂查询 短的、简单事务

设计方法 数据驱动 需求驱动

17/90

Page 18: How to build data warehouse

Jason Fu(SCUT) 2012-11-19

Outline

1. 为什么要建数据仓库2. 数据仓库是什么3. 开发过程4. 开发实例5. Q&A

18/90

Page 19: How to build data warehouse

Jason Fu(SCUT) 2012-11-19

3. 开发过程

数据仓库是一个环境,而不是一件产品。

数据仓库系统是一个信息提供平台,他从业务处理系统获得数据,主要以

星型模型和雪花模型进行数据组织,并为用户提供各种手段从数据中获取

信息和知识。

从功能结构划分,数据仓库系统至少应该包含数据获取( Data

Acquisition )、数据存储( Data Storage )、数据访问( Data

Access )三个关键部分。

19/90

Page 20: How to build data warehouse

Jason Fu(SCUT) 2012-11-19

3. 开发过程

数据仓库的基本架构

20/90

Page 21: How to build data warehouse

Jason Fu(SCUT) 2012-11-19

3. 开发过程

开发策略

自顶向下:实际应用比较困难。

自底向上:用于一个数据集市或一个部门的数据仓库开发 ,容易获得成功 。

两种策略的联合使用:能够快速地完成数据仓库的开发与应用,而且还可以

建立具有长远价值的数据仓库方案。

21/90

Page 22: How to build data warehouse

Jason Fu(SCUT) 2012-11-19

3. 开发过程

开发策略:自顶向下

22/90

Page 23: How to build data warehouse

Jason Fu(SCUT) 2012-11-19

3. 开发过程

开发策略:自底向上

23/90

Page 24: How to build data warehouse

Jason Fu(SCUT) 2012-11-19

3. 开发过程

构建过程

构造 /实施

使用 /维护

新的需求

需求 /设计

Data warehousing 是不断循环的过程

24/90

Page 25: How to build data warehouse

Jason Fu(SCUT) 2012-11-19

3. 开发过程

设计原则

以数据驱动为中心,数据驱动和需求驱动相结合。

数据驱动:根据当前数据基础和质量等情况,进行数据源分析。

需求驱动:根据业务方向性需求、业务问题等,确定系统范围和需求框架。

25/90

Page 26: How to build data warehouse

Jason Fu(SCUT) 2012-11-19

3. 开发过程

数据仓库设计的三级数据模型

概念模型

• “ 信息世界”中的信息结构

• 用 E-R方法,以主题替代实体

逻辑模型

• 一般采用关系模型

物理模型

• 物理存储结构、存储方法

26/90

Page 27: How to build data warehouse

Jason Fu(SCUT) 2012-11-19

3. 开发过程

数据仓库设计的三级数据模型

27/90

Page 28: How to build data warehouse

Jason Fu(SCUT) 2012-11-19

3. 开发过程

开发基本流程

概念模型设计

技术准备工作

逻辑模型设计

物理模型设计

数据仓库生成

数据仓库运行与维护

28/90

Page 29: How to build data warehouse

Jason Fu(SCUT) 2012-11-19

3. 开发过程

概念模型设计 技术准备工作 逻辑模型设计 物理模型设计 数据仓库生成 数据仓库运行与维护

概念模型设计的结果是在原有数据库的基础上建立了一个较为稳固的概念模型。

数据仓库的概念模型设计,首先要对原有数据库系统加以分析理解。

① 界定系统边界 要做的决策类型有哪些? 决策者感兴趣的是什么问题? 这些问题需要什么样的信息? 要得到这些信息需要包含原有数据库系统的哪些部分的数据?

② 确定主要的主题域及其内容 主题域的公共码; 主题域之间的联系; 充分代表主题的属性组。

29/90

Page 30: How to build data warehouse

Jason Fu(SCUT) 2012-11-19

3. 开发过程

概念模型设计 技术准备工作 逻辑模型设计 物理模型设计 数据仓库生成 数据仓库运行与维护

工作:技术评估和技术环境准备。

成果:技术评估报告、软硬件配置方案、系统 (软、硬件 ) 总体设计方案。

30/90

Page 31: How to build data warehouse

Jason Fu(SCUT) 2012-11-19

著名数据仓库产商

31/90

Page 32: How to build data warehouse

Jason Fu(SCUT) 2012-11-19

著名数据仓库产商

32/90

Page 33: How to build data warehouse

Jason Fu(SCUT) 2012-11-19

著名数据仓库产商

33/90

Page 34: How to build data warehouse

Jason Fu(SCUT) 2012-11-19

著名数据仓库产商

34/90

Page 35: How to build data warehouse

Jason Fu(SCUT) 2012-11-19

著名数据仓库产商

35/90

Page 36: How to build data warehouse

Jason Fu(SCUT) 2012-11-19

著名数据仓库产商

36/90

Page 37: How to build data warehouse

Jason Fu(SCUT) 2012-11-19

著名数据仓库产商

37/90

Page 38: How to build data warehouse

Jason Fu(SCUT) 2012-11-19

著名数据仓库产商

38/90

Page 39: How to build data warehouse

Jason Fu(SCUT) 2012-11-19

著名数据仓库产商

39/90

Page 40: How to build data warehouse

Jason Fu(SCUT) 2012-11-19

著名数据仓库产商

40/90

Page 41: How to build data warehouse

Jason Fu(SCUT) 2012-11-19

著名数据仓库产商

41/90

Page 42: How to build data warehouse

Jason Fu(SCUT) 2012-11-19

3. 开发过程

概念模型设计 技术准备工作 逻辑模型设计 物理模型设计 数据仓库生成 数据仓库运行与维护

分析主题域,确定当前要加载的主题

确定粒度层次划分

确定数据分割策略

关系模式定义

记录系统的定义

42/90

Page 43: How to build data warehouse

Jason Fu(SCUT) 2012-11-19

3. 开发过程

概念模型设计 技术准备工作 逻辑模型设计 物理模型设计 数据仓库生成 数据仓库运行与维护

存储结构

确定索引策略

确定数据存放位置

确定存储分配

43/90

Page 44: How to build data warehouse

Jason Fu(SCUT) 2012-11-19

3. 开发过程

概念模型设计 技术准备工作 逻辑模型设计 物理模型设计 数据仓库生成 数据仓库运行与维护

接口编程 从面向应用和操作的环境生成完整的数据; 数据类型的转换; 数据的清洗; 数据的集成; 数据的增量更新。

数据装入 确定数据装入的次序; 清除无效或错误数据; 清除“老化”数据,即清除过期数据; 数据粒度管理; 数据刷新等。

44/90

Page 45: How to build data warehouse

Jason Fu(SCUT) 2012-11-19

3. 开发过程

概念模型设计 技术准备工作 逻辑模型设计 物理模型设计 数据仓库生成 数据仓库运行与维护

建立数据分析应用

理解需求,改善和完善系统

维护数据仓库

45/90

Page 46: How to build data warehouse

Jason Fu(SCUT) 2012-11-19

Outline

1. 为什么要建数据仓库2. 数据仓库是什么3. 开发过程4. 开发实例5. Q&A

46/90

Page 47: How to build data warehouse

Jason Fu(SCUT) 2012-11-19

4. 开发实例

建筑节能数据仓库和数据分析系统

47/90

Page 48: How to build data warehouse

Jason Fu(SCUT) 2012-11-19

建筑节能数据仓库和数据分析系统

在现有的各种建筑节能监管系统的基础上,利用其产生的业务数据,构建一个数据仓库,并基于该数据仓库构建联机分析处理,提供多维分析、报表等功能,为节能决策提供支持。

华南理工大学节约型校园建筑节能监管平台

需 求:

数据来源:

48/90

Page 49: How to build data warehouse

Jason Fu(SCUT) 2012-11-19

建筑节能数据仓库和数据分析系统

概念模型设计

界定系统边界、确定主要的主题域及其内容。

Building_Day_Energydata_Collection

Building_Month_Energydata_Collection

Building_Year_Energydata_Collection

Standard_Type

Building_General_Info

Energy_UnitPrice

………

用户需求

能耗主题域

49/90

Page 50: How to build data warehouse

Jason Fu(SCUT) 2012-11-19

建筑节能数据仓库和数据分析系统

概念模型设计

能耗主题

50/90

Page 51: How to build data warehouse

Jason Fu(SCUT) 2012-11-19

建筑节能数据仓库和数据分析系统

概念模型设计 技术准备工作

实验项目

学习目的

资金

数据集的大小

实际的使用需求

……

51/90

Page 52: How to build data warehouse

Jason Fu(SCUT) 2012-11-19

建筑节能数据仓库和数据分析系统

概念模型设计 技术准备工作 逻辑模型设计

定义关系模式。数据仓库的模型设计采用了雪花模型。

事实表只有一个,为能耗事实表,时间维、能耗维、建筑维和区域维是基本维,而建筑类型维和能源类型维是间接维。

52/90

Page 53: How to build data warehouse

Jason Fu(SCUT) 2012-11-19

建筑节能数据仓库和数据分析系统

概念模型设计 技术准备工作 逻辑模型设计

各维度的粒度层次划分。

时间维度

年季度月日

能源类型维度

能源类型

能源的子项类型

能源维度

能源类型

具体能源

区域维度

国家省份市区 /县

建筑类型维度

建筑大类型建筑分项类型建筑所属单位建筑用途分类

建筑维度

建筑用途类型

具体建筑

53/90

Page 54: How to build data warehouse

Jason Fu(SCUT) 2012-11-19

建筑节能数据仓库和数据分析系统

概念模型设计 技术准备工作 逻辑模型设计

度量值设计

度量值是所分析的多维数据集的中心值,它

是最终用户浏览多维数据集时重点查看的数

据,它是衡量业务成绩的指标。

度量指标能耗量

能耗占比率分项能耗占比率同期比较(差)年度总能耗

有效数据月数量能耗月均值

有效数据日数量能耗日均值最大日能耗最小日能耗

54/90

Page 55: How to build data warehouse

Jason Fu(SCUT) 2012-11-19

建筑节能数据仓库和数据分析系统

概念模型设计 技术准备工作 逻辑模型设计

存储结构

物理模型设计

MySQL 有两种表存储结构, MyISAM 和 InnoDB 。在使用 MySQL 构建数据仓

库时,我们选用的是 MyISAM ,因为 MyISAM 的读取的效率更高。

索引策略

对各个维度表以及事实表的主键加索引,并对事实表对于各维表的外键添加索引。

55/90

Page 56: How to build data warehouse

Jason Fu(SCUT) 2012-11-19

建筑节能数据仓库和数据分析系统

概念模型设计 技术准备工作 逻辑模型设计

物理模型关系图

物理模型设计

56/90

Page 57: How to build data warehouse

Jason Fu(SCUT) 2012-11-19

建筑节能数据仓库和数据分析系统

概念模型设计 技术准备工作 逻辑模型设计 物理模型设计

维度表维度

主题

维表主键

度量值

事实表

57/90

Page 58: How to build data warehouse

Jason Fu(SCUT) 2012-11-19

建筑节能数据仓库和数据分析系统

概念模型设计 技术准备工作 逻辑模型设计

维度表的设计

物理模型设计

名称 类型 说明time_id Number 维表主键date DateTime 日期day Char 月的第几日month Char 年的第几月quarter Char 年的第几季度year Number 年

时间维表( TIME_DIM ) 能源类型维表( ENERGY_TYPE_DIM )

名称 类型 说明energy_type_id Number 维表主键energy_type_name Varchar 能源类型名称energy_type_subitem Varchar 能耗类型子项

能源维表( ENERGY_DIM )

名称 类型 说明energy_id Number 维表主键energy_type_id Number 能源类型维表外键energy_name Varchar 能源名称energy_unit Varchar 能耗单位energy_price Double 能源单价

区域维表( REGION_DIM )

名称 类型 说明region_id Number 维表主键country Varchar 国家province Varchar 省city Varchar 城市county Varchar 县 \区

建筑类型维表( BUILDING_TYPE_DIM )

名称 类型 说明building_type_id Number 维表主键building_type_name Varchar 建筑类型名称building_type_subitem Varchar 建筑类型子项department Varchar 具体单位部门department_subitem_type Varchar 建筑用途类型

建筑维表( BUILDING_DIM )

名称 类型 说明building_id Number 维表主键building_type_id Number 建筑类型维表外键building_name Varchar 建筑名称building_all_area Number 建筑总面积building_storey_num Number 建筑层数human_capacity Number 人口容量function Varchar 使用功能

58/90

Page 59: How to build data warehouse

Jason Fu(SCUT) 2012-11-19

建筑节能数据仓库和数据分析系统

概念模型设计 技术准备工作 逻辑模型设计

事实表的设计

物理模型设计

能耗事实表( ENERGY_FACT )

名称 类型 说明energy_fact_id Number 事实表主键time_id Number 时间维表外键energy_id Number 能源维表外键region_id Number 地区维表外键building_id Number 建筑维表外键energy_cons Double 能耗量energy_cost Double 能耗额unit_area_energy_cons Double 单位面积能耗量unit_area_energy_cost Double 单位面积能耗额per_capita_energy_cons Double 人均能耗量per_capita_energy_cost Double 人均能耗额

59/90

Page 60: How to build data warehouse

Jason Fu(SCUT) 2012-11-19

建筑节能数据仓库和数据分析系统

概念模型设计 技术准备工作 逻辑模型设计 物理模型设计 数据仓库生成

数据 ETL

缺失值 噪声数据 不一致 结构不符合分析的要求 ……

数据仓库ETL

SQL

60/90

Page 61: How to build data warehouse

Jason Fu(SCUT) 2012-11-19

建筑节能数据仓库和数据分析系统

概念模型设计 技术准备工作 逻辑模型设计 物理模型设计 数据仓库生成

构建建筑能耗数据转换的工作示例

使用 Kettle ETL 进行数据的 ETL

61/90

Page 62: How to build data warehouse

Jason Fu(SCUT) 2012-11-19

建筑节能数据仓库和数据分析系统

概念模型设计 技术准备工作 逻辑模型设计 物理模型设计 数据仓库生成

数据库可视化操作工具 +SQL脚本

SQL脚本

62/90

Page 63: How to build data warehouse

Jason Fu(SCUT) 2012-11-19

建筑节能数据仓库和数据分析系统

概念模型设计 技术准备工作 逻辑模型设计 物理模型设计 数据仓库生成 数据仓库运行与维护

使用 Mondrian 构建一个基于Web 的数据仓库系统

63/90

Page 64: How to build data warehouse

Jason Fu(SCUT) 2012-11-19

使用 Mondrian 构建一个基于 Web 的数据仓库系统

Mondrian 是一个开源项目。一个用 Java 写成的 OLAP引擎。它用MDX语言实现查询,从关系数据库 (RDBMS) 中读取数据。然后经过Java API以多维的方式对结果进行展示。

JPivot  是 Mondrian 的表现层 TagLib ,一直保持着良好的开发进度。

Mondrian 为客户端提供一个用于查询的 API 。

Mondrian 的使用方式同 JDBC 驱动类似。可以非常方便的与现有的Web项目集成。

64/90

Page 65: How to build data warehouse

Jason Fu(SCUT) 2012-11-19

使用 Mondrian 构建一个基于 Web 的数据仓库系统

模式管理器

Mondrian 的模式文件,它定义了关系数据到多维数据的映射。

需要我们生成

表现层

多维层

集合层

存储层

65/90

Page 66: How to build data warehouse

Jason Fu(SCUT) 2012-11-19

使用 Mondrian 构建一个基于 Web 的数据仓库系统

开发环境:

操作系统: Windows 7

Web服务器: Tomcat 6.0

关系数据库: MySQL 5.1

开发工具: MyEclipse 8.5

66/90

Page 67: How to build data warehouse

Jason Fu(SCUT) 2012-11-19

使用 Mondrian 构建一个基于 Web 的数据仓库系统

到 Mondrian官网下载 Mondrian压缩包,最新稳定版为 mondrian-3.3.0.14703 。

使用 MyEclipse创建一个 Java Web项目 EnergyWarehouse 。

解压Mondrian压缩包,在 lib 目录下找到 mondrian.war ,将其拓展名改为

zip ,直接解压到 mondrian文件夹,构建 Mondrian Web项目所需的文件都在

里面。

67/90

Page 68: How to build data warehouse

Jason Fu(SCUT) 2012-11-19

使用 Mondrian 构建一个基于 Web 的数据仓库系统

进入 mondrian文件夹,选中 jpivot 、 wcf二个文件夹及busy.jsp 、 error.jsp 、 testpage.jsp三个文件,将这些资源复制到 Java Web项目的WebRoot 目录下。

注: jpivot 、 wcf 这两个文件夹包含 mondrian使用的图像和 css文件。 Busy.jsp显示等待页面、 error.jsp显示出错页面、 testpage.jsp 这文件的用处将在后面介绍。

68/90

Page 69: How to build data warehouse

Jason Fu(SCUT) 2012-11-19

使用 Mondrian 构建一个基于 Web 的数据仓库系统

进入 mondrian文件夹的 WEB-INF文件夹,选中 jpivot 、 lib 、 wcf 这三个文件夹,将它们复制到 Java Web项目的 WEB-INF文件夹中。

注: Jpivot 、 wcf 这两个文件夹包含 jpivot 和 wcf 用于生成用户界面的配置文件(*.xml 、 *.xsl) 及标签文件 (*.tld) 的定义。 Lib文件夹包含的是 mondrian 所要用的 java 包。

69/90

Page 70: How to build data warehouse

Jason Fu(SCUT) 2012-11-19

使用 Mondrian 构建一个基于 Web 的数据仓库系统

配置 Java Web项目的 web.xml

过滤器

监听器

标签库

70/90

Page 71: How to build data warehouse

Jason Fu(SCUT) 2012-11-19

使用 Mondrian 构建一个基于 Web 的数据仓库系统

建立 mondrian 模式 (schema) 文件

一个 mondriann 模式文件定义了一个多维数据库它包含一个逻辑模型 (logical

model) 、一组数据立方 (consisting of cubes) 、层次 (hierarchies) 、和成员(members), 并映射到相应的物理模型上。

配置一个模式就是配置一个关系数据结构到多维数据结构的映射。

逻辑模型 (logical model) 是为了编写 MDX 查询语言而创建的 , 有如下概念 :

数据立方 (cubes);

维 (dimensions);

层次 (hierarchies);

级别 (levels);

成员 (members).

71/90

Page 72: How to build data warehouse

Jason Fu(SCUT) 2012-11-19

使用 Mondrian 构建一个基于 Web 的数据仓库系统

建立mondrian 模式 (schema)文件

在 Java Web项目的 WEB-INF 下新建一个

queries 的文件夹,然后在该文件夹下创建一个

名为 energydb.xml 的文件。

72/90

Page 73: How to build data warehouse

Jason Fu(SCUT) 2012-11-19

使用 Mondrian 构建一个基于 Web 的数据仓库系统

73/90

Page 74: How to build data warehouse

Jason Fu(SCUT) 2012-11-19

使用 Mondrian 构建一个基于 Web 的数据仓库系统

74/90

Page 75: How to build data warehouse

Jason Fu(SCUT) 2012-11-19

使用 Mondrian 构建一个基于 Web 的数据仓库系统

MDX (多维表达式)

在模式文件定义完成之后,我们就可以根据它来编写相应 MDX 查询语句了。

MDX 是一种语言,它可以表达在线分析处理( OLAP )数据库上的选择、计算和一些元数据定义等操作,并赋予用户自定义表现查询结果的能力。

MDX 在很多方面与结构化查询语言 (SQL) 语法相似。

75/90

Page 76: How to build data warehouse

Jason Fu(SCUT) 2012-11-19

使用 Mondrian 构建一个基于 Web 的数据仓库系统

MDX (多维表达式)

基本的 MDX SELECT 语句包含一个 SELECT 子句和一个 FROM 子句,以及一个可选的 WHERE 子句。

SELECT 子句决定 MDX SELECT 语句的轴维度。本 MDX 查询示例中定义了两个轴维度。

FROM 子句决定当析取数据以填充 MDX SELECT 语句的结果集时将使用哪个多维数据源。

SELECT [<axis_specification> [, <axis_specification>...]] FROM [<cube_specification>][WHERE [<slicer_specification>]]

76/90

Page 77: How to build data warehouse

Jason Fu(SCUT) 2012-11-19

使用 Mondrian 构建一个基于 Web 的数据仓库系统

创建 MDX 查询

Mondrian创建 MDX 查询,是通过创建一个 jsp文件,该 jsp使用 jpivot 的

mondrianQuery标签来完成查询的。

Jsp文件位于 Java Web项目的 /WEB-INF/queries文件夹下。

该文件最后将被 testpage.jsp使用。

77/90

Page 78: How to build data warehouse

Jason Fu(SCUT) 2012-11-19

使用 Mondrian 构建一个基于 Web 的数据仓库系统 一个 MDX 查询文件 导入 jpivot 标

用于执行 MDX 查询的 jpivot标签

指定查询所使用的模式文件

查询所使用的 JDBC 驱动

用于连接到数据的 url ,包含数据库的用户名及密码等

需要被执行的 MDX语句

78/90

Page 79: How to build data warehouse

Jason Fu(SCUT) 2012-11-19

使用 Mondrian 构建一个基于 Web 的数据仓库系统

最终 Java Web项目效果

编写完所需的其他的 MDX 查询文件。

至此,完成项目的配置。

模式( Schema )文件和 MDX 查询文件

均位于此

79/90

Page 80: How to build data warehouse

Jason Fu(SCUT) 2012-11-19

使用 Mondrian 构建一个基于 Web 的数据仓库系统

部署项目 部署到 Tomcat服务器。

直接在 MyEclipse 中运行。

访问 http://localhost:8080/ EnergyWarehouse/

80/90

Page 81: How to build data warehouse

Jason Fu(SCUT) 2012-11-19

建筑节能数据仓库和数据分析系统

81/90

Page 82: How to build data warehouse

Jason Fu(SCUT) 2012-11-19

建筑节能数据仓库和数据分析系统

WITH MEMBER [Measures].[ 能耗占比率 ] AS 'iif(([Measures].[ 能耗量 ],[ 时间 ].CurrentMember.Parent) > 0,[Measures].[ 能耗量 ] / ([Measures].[ 能耗量 ], [ 时间 ].CurrentMember.Parent),NULL

)',FORMAT_STRING='Percent'

select {[Measures].[ 能耗量 ], [Measures].[ 能耗占比率 ] } ON columns,NON EMPTY {([地区 ].[ 所有地区 ], [ 建筑 ].[ 所有建筑 ], [ 能源 ].[ 所有能源 ], [ 时间 ].[ 所有时间 ]) } ON rowsfrom [Energys]

82/90

Page 83: How to build data warehouse

Jason Fu(SCUT) 2012-11-19

建筑节能数据仓库和数据分析系统

select {[Measures].[ 能耗量 ]}ON columns,TopCount({Descendants([ 建筑 ].[ 所有建筑 ],4,LEAVES) },10,[Measures].[ 能耗量 ])ON rowsfrom [PerCapita]

83/90

Page 84: How to build data warehouse

Jason Fu(SCUT) 2012-11-19

建筑节能数据仓库和数据分析系统

84/90

Page 85: How to build data warehouse

Jason Fu(SCUT) 2012-11-19

建筑节能数据仓库和数据分析系统

系统演示

85/90

Page 86: How to build data warehouse

Jason Fu(SCUT) 2012-11-19

其他数据仓库系统

中国电信上行短信数据仓库和数据分析系统

省交通厅数据仓库系统

86/90

Page 87: How to build data warehouse

Jason Fu(SCUT) 2012-11-19

中国电信上行短信数据仓库和数据分析系统

系统演示87/90

Page 88: How to build data warehouse

Jason Fu(SCUT) 2012-11-19

省交通厅数据仓库系统

系统演示88/90

Page 89: How to build data warehouse

Jason Fu(SCUT) 2012-11-19

Outline

1. 为什么要建数据仓库2. 数据仓库是什么3. 开发过程4. 开发实例5. Q&A

89/90

Page 90: How to build data warehouse

Jason Fu(SCUT) 2012-11-19

5. Q&A

90/90

Page 91: How to build data warehouse

Jason Fu(SCUT) 2012-11-19

Thank You!

91/90