目录

  • 1 第一章 数据仓库概述
    • 1.1 授课安排
    • 1.2 数据仓库及其历史
      • 1.2.1 数据仓库的概念
        • 1.2.1.1 本节视频
      • 1.2.2 数据仓库特征
        • 1.2.2.1 本节视频
    • 1.3 数据仓库系统结构
      • 1.3.1 数据仓库系统的组成
        • 1.3.1.1 本节视频
      • 1.3.2 ETL
        • 1.3.2.1 本节视频
      • 1.3.3 数据仓库和数据集市的关系
      • 1.3.4 元数据及其管理
      • 1.3.5 数据集市和元数据管理视频
    • 1.4 数据仓库系统开发工具
    • 1.5 数据仓库与操作型数据库的关系
      • 1.5.1 本节视频内容
  • 2 第二章 数据仓库设计
    • 2.1 授课安排
    • 2.2 数据仓库设计概述
    • 2.3 数据仓库的规划和需求分析
    • 2.4 数据仓库的建模
    • 2.5 数据仓库的物理模型设计
    • 2.6 数据仓库的部署和维护
  • 3 第三章 OLAP技术
    • 3.1 授课安排
    • 3.2 OLAP概述
    • 3.3 OLAP的多维数据模型
    • 3.4 OLAP实现
  • 4 第四章 数据
    • 4.1 课程资料
  • 5 第五章 数据挖掘概述
    • 5.1 授课安排
    • 5.2 什么是数据挖掘?
    • 5.3 数据挖掘系统
    • 5.4 视频
    • 5.5 数据挖掘过程
  • 6 第六章 关联分析
    • 6.1 授课安排
    • 6.2 关联分析概念
    • 6.3 Apriori算法
    • 6.4 FP-growth树
    • 6.5 多层关联规则
    • 6.6 【扩充知识】机器学习——关联规则——支持度(support)、置信度(confidence)、提升度(Lift)
  • 7 第七章 序列模式挖掘
    • 7.1 序列模式挖掘概述
    • 7.2 AprioriAll算法
    • 7.3 AprioriSome算法
    • 7.4 FreeSpan算法
    • 7.5 PrefixSpan算法
  • 8 第八章 聚类分析
    • 8.1 聚类概述
  • 9 分类算法
    • 9.1 课件
  • 10 实验1 python基础
    • 10.1 讲解文本内容
    • 10.2 课程PDF
    • 10.3 实验代码
    • 10.4 实验报告封皮
  • 11 实验2-python
    • 11.1 讲解文本内容
    • 11.2 实验代码
    • 11.3 实验报告封面
  • 12 实验3--python
    • 12.1 讲解文本内容
    • 12.2 实验代码
    • 12.3 实验报告封面
  • 13 实验4--python
    • 13.1 讲解文本内容
    • 13.2 21.1实验代码
    • 13.3 实验内容2
    • 13.4 实验内容3
    • 13.5 实验报告封面
  • 14 实验5--python
    • 14.1 文本内容-NumPy模块
    • 14.2 第三方可视化数据分析图表
    • 14.3 数据
    • 14.4 思考题
    • 14.5 实验报告封面
  • 15 实验6--python
    • 15.1 实验 NumPy矩阵的基本操作
    • 15.2 实验 关联规则算法
    • 15.3 实验 商品零售购物篮分析
    • 15.4 实验报告封面
  • 16 实验7--python
    • 16.1 实验1 用关联规则分析方法推荐电影
    • 16.2 实验2 FP-growth算法
    • 16.3 实验3 教育平台的线上课程推荐策略
    • 16.4 实验报告封面
  • 17 实验8-python
    • 17.1 实验1 购物车分析
    • 17.2 实验2 基于关联规则的文本分析
  • 18 实验9--python
    • 18.1 实验1 聚类分析
    • 18.2 实验2 航空公司客户价值分析
    • 18.3 实验3 运输车辆安全驾驶行为分析
    • 18.4 实验报告封面
OLAP实现

OLAP实现



一、数据立方体的有效计算

1、预计算与维灾害

多维数据分析的核心是有效地计算多个维集合上的聚集。按照SQL术语,这些聚集称为GROUP BY(分组),每个分组可以用一个数据立方体表示。

对不同抽象层通过聚集创建的子数据立方体称为方体(cuboid)。因此原数据立方体可以看作方体的格,每个较高抽象层将进一步减少结果的规模。当回答一个查询时,应当使用与给定任务相关的最小可用方体。

给定一个维的集合,例如,对于销售数据立方体(商品,地点,日期,销售量),其维集合为{商品,地点,日期},由它可以构造一个方体的格,如图3.14所示,其中0维方体存放最高层的汇总,称作顶点方体,是总销售量在所有的三个维汇总,也就是该立方体中所有数据的总销售量,顶点方体通常用All标记,它仅包含一个值。存放最底层汇总的方体称为基本方体,图中3维方体是给定维时间、地点和商品的基本方体。除基本方体外的其他方体称为非基本方体,基本方体中数据单元称为基本单元,非基本方体中数据单元称为聚集单元。

每个方体在不同的汇总级显示数据,汇总级越高,其维数就越小,对应的数据量(元组个数)也越少,也就是说,一个k+1维方体的数据量大于其中在任一维上聚集得到的k维方体的数据量。

一个OLAP查询问题可以转化成方体的计算。求某个k维方体有以下两种方法:

(1)通过基本方体进行聚集产生k维方体。由于基本方体维数最多,其数据量最大,所以该方法是十分耗时的。

(2)从k+1维方体计算出k维方体。

如给定(商品,地点)这个2维方体,在各维上聚集可以产生(商品)和(地点)两个1维方体,显然比从(商品,地点,日期)基本方体产生(商品)和(地点)方体要省时,但需要预先计算出(商品,地点)方体。

从方法(2)看出,对于不同的查询分析,OLAP可能需要访问不同的方体。

因此,提前计算数据立方体中所有的或者一部分方体,这称为预计算。预计算带来快速的响应时间,并避免一些冗余计算。

对于不同的查询,OLAP可能需要访问不同的方体。因此提前计算数据立方体中的所有或者一部分方体,看来是好主意。预计算带来快速的响应时间,并避免一些冗余计算。

 然而,预计算的挑战是?

然而,预计算的主要挑战是,如果数据立方体中所有的方体都预先计算,所需的存储空间可能爆炸,特别是当立方体包含许多维,这许多维都具有多层的概念分层时,存储需求甚至更多,这个问题称作维灾害。

那么,“n维数据立方体有多少个方体?”如果n个维没有概念分层,n维数据立方体的方体总数为2^n。然而,在实践中,许多维确实具有概念分层。例如,维时间的概念分层“日<月<季度<年”。于是,n维数据立方体可能产生的方体总数是

式中,Li是与维i相关联的层数。将1加到公式的Li上,包括虚拟的顶层all。

该公式基于这样一个事实:每个维最多只有一个抽象层出现在一个方体中。例如,时间维有4个概念层,或者说有5个概念层(包括虚拟层all)。如果数据立方体有10维,每层5层(包括虚拟层all),则可能产生的方体总数将是5^10=9.8*(10^6)

这种当数据立方体的维数较多和各维的层次较多时,可能的聚集计算量剧增,导致存储空间出现爆炸的现象称作维灾难。


2、聚集的物化

所谓物化就是预计算并存储数据立方体的方体。物化方法有不物化、全物化和部分物化。

(1)不物化方法

不预计算任何“非基本”方体。这可能导致回答查询时,因进行昂贵的多维聚集计算,速度非常慢。

(2)全物化方法

全物化是指对维集合的所有可能组合都进行聚集。

 通常这种选择需要海量存储空间来存放所有预计算的方体。

(3)部分物化方法

部分物化是指在部分维及其相关层次上进行聚集,即从数据立方体的所有方体中选择一个子集进行物化。

在一般情况下,通常20%的聚集就能够满足80%的查询需要。如何确定该20%的聚集是提高聚集效率的关键。部分物化是存储空间和响应时间二者之间的很好折衷。

3、数据立方体的压缩存储

通常数据立方体中包含海量数据,为了节省存储空间,人们提出了各种数据压缩方法。这里介绍一种相对简单的压缩方法。

对于给定的数据立方体,由于度量的不同值个数可能很大,难以压缩存储。主要是对维进行压缩存储。

二、索引OLAP数据

1、位图索引

基本设计思想:用一个0、1位串来表示一个元组某一属性值的取值,位串中的位的位置表示了关系表中元组的位置。 

在给定属性的位图索引中,属性域中的每个值v有一个不同的位向量Bv,位向量的长度等于基于表的记录个数。如果给定的属性域包含n个值,则位图索引中以n位向量表示每个不同的值。如果数据表给定行上该属性值为v,则在位图索引的对应行,表示该值的为1,该行的其他位均设为0。

【例】假设在一个与销售事实相对应的数据立方中,有一个顾客的性别属性gender,一个是产品的种类属性item。其中gender属性有两个不同的值:M和F。产品的种类属性item有4个不同的取值:a、b、c、d。设数据立方中共有8个元组。如果在gender属性上建立位图索引则需要两个位向量,每个向量共8位。在item上建立位图索引需要4个位向量,每个向量共8位。

2、连接索引

所谓连接索引,就是将事实表和维表中的索引项进行连接运算,然后将结果作为索引保留。

3、OLAP查询的有效处理

物化方体和索引OLAP数据的目的是加快数据立方体查询处理的速度。通常,OLAP查询处理的步骤如下:

①确定哪些操作应当在可利用的方体上执行:这涉及将查询中的选择、投影、上卷(分组)和下钻操作转换成对应的SQL或OLAP操作。例如,数据立方体的切片和切块可能对应于物化方体上的选择或投影操作。

②确定相关操作应当使用哪些物化的方体:这涉及找出可能用于回答查询的所有物化方体,使用方体之间的依赖关系,剪去上集合,评估使用剩余物化方体的代价,并选择代价最低的方体。