• 什么是数据仓库
  • 数据仓库的构建与使用
  • 数据仓库与操作数据库系统
  • 数据仓库的概念模型
  • 一种数据挖掘查询语言: DMQL
  • 概念分层
  • 多维数据模型上的OLAP操作


什么是数据仓库

  • 数据仓库的定义很多,但却很难有一种严格的定义
  • 它是一个提供决策支持功能的数据库,它与公司的操作数据库分开维护。
  • 为统一的历史数据分析提供坚实的平台,对信息处理提供支持

数据仓库关键特征
面向主题,是数据仓库显著区别于关系数据库系统的一个特征
围绕一些主题,如顾客、供应商、产品等
关注决策者的数据建模与分析,而不是集中于组织机构的日常操作和事务处理。
排除对于决策无用的数据,提供特定主题的简明视图。

数据集成
一个数据仓库是通过集成多个异构数据源来构造的。
关系数据库,一般文件,联机事务处理记录

使用数据清理和数据集成技术。
确保命名约定、编码结构、属性度量等的一致性。
当数据被移到数据仓库时,它们要经过转化

随时间而变化
数据仓库是从历史的角度提供信息
数据仓库的时间范围比操作数据库系统要长的多。
操作数据库系统: 主要保存当前数据。
数据仓库:从历史的角度提供信息(比如过去 5-10 年)
数据仓库中的每一个关键结构都隐式或显式地包含时间元素,而操作数据库中的关键结构可能就不包括时间元素。

数据不易丢失
尽管数据仓库中的数据来自于操作数据库,但他们却是在物理上分离保存的。
操作数据库的更新操作不会出现在数据仓库环境下。
不需要事务处理,恢复,和并发控制等机制

只需要两种数据访问:
数据的初始转载和数据访问(读操作)


数据仓库的构建与使用

数据仓库的构建包括一系列的数据预处理过程

  • 数据清理
  • 数据集成
  • 数据变换

数据仓库的使用热点是商业决策行为,例如:

  • 增加客户聚焦
  • 产品重定位
  • 寻找获利点
  • 客户关系管理

数据仓库与操作数据库系统

操作数据库系统的主要任务是联机事务处理OLTP
日常操作: 购买,库存,银行,制造,工资,注册,记帐等
数据仓库的主要任务是联机分析处理OLAP
数据分析和决策支持,支持以不同的形式显示数据以满足不同的用户需要

多维数据模型
数据仓库和OLAP工具基于多维数据模型

在多维数据模型中,数据以数据立方体(data cube)的形式存在
数据立方体允许以多维数据建模和观察。它由维和事实定义
维是关于一个组织想要记录的视角或观点。每个维都有一个表与之相关联,称为维表。

多维数据模型围绕中心主题组织,该主题用事实表表示

事实表包括事实的名称或度量以及每个相关维表的关键字

事实指的是一些数字度量

做数据仓库还是做dba呢 数据仓库和olap_做数据仓库还是做dba呢

数据仓库的概念模型

最流行的数据仓库概念模型是多维数据模型。这种模型可以以星型模式、雪花模式、或事实星座模式的形式存在。

星型模式(Star schema): 事实表在中心,周围围绕地连接着维表(每维一个),事实表含有大量数据,没有冗余。

做数据仓库还是做dba呢 数据仓库和olap_数据仓库_02


雪花模式(Snowflake schema): 是星型模式的变种,其中某些维表是规范化的,因而把数据进一步分解到附加表中。结果,模式图形成类似于雪花的形状。

做数据仓库还是做dba呢 数据仓库和olap_数据模型_03


事实星座(Fact constellations): 多个事实表共享维表, 这种模式可以看作星型模式集,因此称为星系模式(galaxy schema),或者事实星座(fact constellation)

做数据仓库还是做dba呢 数据仓库和olap_做数据仓库还是做dba呢_04

一种数据挖掘查询语言: DMQL

DMQL首先包括定义数据仓库和数据集市的语言原语,这包括两种原语定义:一种是立方体定义,一种是维定义

立方体定义 (事实表)

define cube <cube_name> [<dimension_list>]:         <measure_list>

维定义 (维表)

define dimension <dimension_name> as
(<attribute_or_subdimension_list>)

特殊案例 (共享维表的定义)
第一次作为维表定义 “cube definition”
然后:define dimension <dimension_name> as <dimension_name_first_time> in cube <cube_name_first_time>

概念分层

一个概念分层(concept hierarchy)定义一个映射序列,将低层概念映射到更一般的高层概念
E.g. 表示location的概念:杭州->浙江->中国->亚洲
概念分层允许我们在各种抽象级审查和处理数据

多维数据模型(数据立方体)使得从不同的角度对数据进行观察成为可能,而概念分层则提供了从不同层次对数据进行观察的能力;结合这两者的特征,我们可以在多维数据模型上定义各种OLAP操作,为用户从不同角度不同层次观察数据提供了灵活性:

多维数据模型上的OLAP操作

上卷(roll-up):汇总数据
通过一个维的概念分层向上攀升或者通过维规约
当用维归约进行上卷时,一个或多个维由给定的数据立方体删除

上卷操作通过维的概念分层向上攀升或者通过维归约(即将4个季度的值加到一起为一年的结果)在数据立方体上进行聚集。

  如在产品维度上,由产品向小类上卷,可得到小类的聚集数据,再由小类向大类上卷,可得到大类层次的聚集数据

  

做数据仓库还是做dba呢 数据仓库和olap_做数据仓库还是做dba呢_05


  

下钻(drill-down):上卷的逆操作

由不太详细的数据到更详细的数据,可以通过沿维的概念分层向下或引入新的维来实现 (为给定数据添加更多细节) 下钻是上卷的逆操作,它由不太详细的数据到更详细的数据。

  使用户在多层数据中能通过导航信息而获得更多的细节数据。下钻可以沿维的概念分层向下或引入新的维或维的层次来实现。

做数据仓库还是做dba呢 数据仓库和olap_数据模型_06

切片和切块(slice and dice)
切片操作在给定的数据立方体的一个维上进行选择,导致一个子方
切块操作通过对两个或多个维进行选择,定义子方

切片定义:在多维数据集的某一维上选定一个维成员的操作称为切片。

例如,在多维数组:   (维1,维2,…,维i,…,维n,度量列表) 中选定一维,即维i,并取其一维成员(维成员vi),所得的多维数组的子集
  (维1,…,维i-1,维成员vi,维i+1,…,维n,度量列表) 称为维i上的一个切片。

做数据仓库还是做dba呢 数据仓库和olap_数据模型_07

 切块定义:在多维数据集(维1,维2,…,维n,度量列表)中通过对两个或多个维执行选择得到子集的操作称为切块

 

做数据仓库还是做dba呢 数据仓库和olap_数据模型_08

做数据仓库还是做dba呢 数据仓库和olap_数据仓库_09

转轴(pivot)

立方体的重定位,可视化,或将一个3维立方体转化为一个2维平面序列

转轴是一种可视化操作,通过转动当前数据的视图来提供一个数据的替代表示

做数据仓库还是做dba呢 数据仓库和olap_数据_10

做数据仓库还是做dba呢 数据仓库和olap_数据模型_11

其他OLAP操作
钻过(drill_across):执行涉及多个事实表的查询
钻透(drill_through):使用关系SQL机制,钻到数据立方体的底层,到后端关系表
其他OLAP操作可能包括列出表中最高或最低的N项,以及计算移动平均值、增长率、利润、统计函数等等