数据仓库:分析、开发与挖掘全解析
1. 数据仓库架构基础
在数据仓库的架构设计中,星型模式和雪花模式是两种常见的选择。星型模式的主要优势在于其简单性,这使得它能够创建非常简单的查询接口。而雪花模式则明确表示了层次结构,减少了冗余和异常,但相对复杂一些。不过,它也提供了易于使用的接口来支持查询准备。这里我们主要假设使用星型模式。
2. 数据分析操作
2.1 查询制定接口
对于按照星型模式组织的数据集市进行数据分析时,首先需要根据特定数据分析活动的需求,提取事实和维度的子集。数据提取遵循一个标准范式:维度用于选择和分组数据,而聚合函数通常应用于事实。
例如,在图 13.7 所示的数据提取接口中,预先选择了三个维度属性:促销名称、产品名称和销售月份,同时选择了每个事实的销售数量。通过在模块下部插入特定值(如‘Supersaver’),可以指定对特定促销的销售情况感兴趣。还可以选择产品值区间(如‘pasta’和‘oil’)以及时间区间(如‘February’到‘April’)。数据提取接口的最后一行定义了结果的结构,应包括产品维度(包含所选值‘pasta’和‘oil’)、时间维度(范围在‘February’到‘April’)以及总销售数量。
这个接口对应一个具有预定义结构的 SQL 查询,用户的选择会完善这个查询。查询中包含连接子句(将事实表与维度表连接起来)、选择子句(提取相关数据)、分组、排序和聚合子句。以用户选择为例,构建的查询如下:
select Time.Month, Product.Name, sum(Qty)
from Sale, Time, Product
where Sale.TimeCode = Time.TimeCode
and Sale.ProductCode = Product.ProductCode
and Sale.PromoCode = Promotion.PromoCode
and (Product.Name = 'Pasta' or Product.Name = 'Oil')
and Time.Month between 'Feb' and 'Apr'
and Promotion.Name = 'SuperSaver'
group by Time.Month, Product.Name
order by Time.Month, Product.Name
查询结果可以以矩阵或图形形式在 OLAP 客户端呈现。矩阵形式中,维度对应行和列,事实对应单元格,类似于电子表格。这种数据表示方式被分析工具广泛使用,因为它允许对查询结果进行电子表格操作。也可以使用经典的条形图或饼图来可视化数据,例如,条形图可以使用不同颜色表示不同时间的不同产品类型。
2.2 钻取和上卷
除了数据呈现,还有两个源于典型电子表格操作的数据操作原语:钻取和上卷。
钻取允许添加一个分析维度,从而对数据进行细分。例如,用户可能对添加销售区域的销售数量分布感兴趣,对区域进行钻取操作。假设区域属性有‘North’、‘Centre’和‘South’三个值,钻取后会得到相应的细分数据。
上卷则允许消除一个分析维度,对数据进行重新聚合。例如,用户可能认为按区域细分比按每月销售细分更有用,通过对月份进行上卷操作可以得到相应结果。
通过交替进行上卷和钻取操作,分析师可以更好地突出对事实所代表现象有更大影响的维度。需要注意的是,上卷操作可以在查询结果上进行,而钻取操作通常需要重新制定和评估查询,因为它需要在查询结果中添加列。
2.3 数据立方体
由于聚合操作的频繁使用,引入了一个非常强大的运算符——数据立方体,用于对提取分析的表中所有可能的聚合进行操作。
例如,假设数据仓库中有一个描述汽车销售的表,我们只展示 1998 年到 1999 年期间销售的红色法拉利或红色保时捷的元组。通过在包含分组子句的查询中添加
with cube
子句可以构建数据立方体。示例查询如下:
select Make, Year, Colour, sum(Sales)
from Sales
where (Make = 'Ferrari' or Make = 'Porsche')
and Colour = 'Red'
and Year between 1998 and 1999
group by Make, Year, Colour
with cube
这个查询会根据三个分析维度(品牌、年份和颜色)组合分组元组,提取所有聚合结果。聚合用多态值
ALL
表示,它(像
NULL
一样)存在于所有域中,对应域中所有可能的值。
数据立方体的评估复杂度会随着分组属性数量的增加呈指数级增长。另一种 SQL 扩展使用
with roll up
子句,它构建渐进式聚合而不是所有可能的聚合,因此评估操作的复杂度仅随分组属性数量的增加呈线性增长。示例查询如下:
select Make, Year, Colour, sum(Sales)
from Sales
where (Make = 'Ferrari' or Make = 'Porsche')
and Colour = 'Red'
and Year between 1998 and 1999
group by Make, Year, Colour
with roll up
with cube
和
with roll up
查询在许多关系型数据库管理系统中都存在,并且不一定需要数据仓库的存在。在任何情况下,都可以根据星型模型对这两个查询进行解释,因为分组子句的属性充当维度,而选择子句的其余属性描述应用于事实的聚合操作。
3. 数据仓库的开发
3.1 开发方法
数据仓库的开发有两种替代方法:
-
ROLAP(关系型 OLAP)
:使用经过适当调整和扩展的关系技术。数据使用表存储,但使用特殊的数据结构高效地执行分析操作。
-
MOLAP(多维 OLAP)
:更激进的方法,直接使用向量数据结构以多维形式存储数据。
许多专门的数据集市管理产品采用 MOLAP 解决方案,而大型关系型供应商使用 ROLAP 解决方案。ROLAP 解决方案将 OLAP 特定的解决方案与关系型数据库管理系统的所有技术经验相结合,因此很可能在中长期占据主导地位。
3.2 ROLAP 技术的关键元素
3.2.1 位图和连接索引
- 位图索引 :允许在选择条件中高效创建合取和析取,或进行并集和交集的代数运算。其基本思想是将每个元组表示为位向量的一个元素,向量的长度等于表的基数。位图索引的根和中间节点保持不变,叶子节点为索引的每个值包含一个向量。对于包含该值的元组,向量中的位设置为 1,否则设置为 0。例如,在 PROMOTION 表的 Name 和 Agency 属性上使用位图索引时,要识别对应谓词 Name = ‘SuperSaver’ 和 Agency = ‘PromoPlus’ 的元组,只需分别使用索引访问对应常量的两个向量,提取它们并进行按位与操作,结果向量中为 1 的位对应的元组即为满足条件的元组。类似的位操作可以管理析取。显然,如果表发生修改,位图索引很难管理,因此适合在数据加载操作期间,针对给定的表基数构建。
- 连接索引 :允许高效执行维度表和事实表之间的连接操作。它们提取满足维度施加条件的事实。连接索引基于维度键构建,其叶子节点指向包含这些键值的事实表元组,而不是指向维度的元组。例如,在数据集市中,对 PromoCode 属性的连接索引,其叶子节点会包含对应每个促销的事实元组的引用,也可以在不同维度的键集(如 PromoCode 和 ProdCode)上构建连接索引。
使用位图和连接索引时,需要进行成本 - 效益分析。成本主要源于永久构建和存储索引的必要性,而效益与数据仓库系统实际用于解决查询的情况相关。
3.2.2 视图物化
许多对数据仓库的查询需要重复进行繁琐的聚合和综合操作。在这种情况下,评估表达聚合数据的视图并永久存储它们是很方便的,这种技术称为视图物化。例如,在与超市管理相关的数据集市中,物化视图可以包含按产品聚合的销售数据,或每个商店的月度销售数据。关于这些聚合的查询可以直接在物化视图上执行,而不是在数据仓库中执行。
选择要物化的视图是一个相当复杂的问题,需要了解数据集市中使用的典型查询及其执行频率。一般来说,当一个视图可以显著减少多个常用查询的执行时间时,它是合适的。
每个视图都依赖于一组基表。在数据仓库这样基表不经常修改的环境中,视图物化非常方便。然而,当表重新加载或增量修改时,必须更新视图,将基表修改的影响传播到视图。可以使用主动规则来增量更新物化视图。
4. 数据挖掘
4.1 数据挖掘过程
数据挖掘的目标是从大量数据集中提取有用信息。这个任务是重复且自适应地进行的,逐步提取知识,分为四个阶段:
1.
领域理解
:如果事先没有对应用领域有很好的理解,就不可能提取有用的信息。
2.
数据集准备
:这一步需要确定要进行数据挖掘的数据仓库子集,并对数据进行编码,使其适合作为数据挖掘算法的输入。
3.
模式发现
:对前面提取的数据集应用数据挖掘技术,以发现数据中的重复模式。
4.
模式评估
:从发现的模式中得出结论,评估下一步要进行的实验和要提出的假设,或在知识发现过程中得出相应的结论。
数据挖掘过程在能够做出运营决策时具有影响力,例如修改大型商店的商品分配政策或改变信贷授予政策。
4.2 数据挖掘问题
虽然每个应用都有特定的特征,但有一些具有规则、重复结构的一般问题已经被识别出来,这些问题可以形式化,然后通过一套数据挖掘算法解决。通常,数据挖掘算法具有良好的可扩展性,即在应用于大型数据集时能保证良好的效率特征。下面介绍三个经典问题:
4.2.1 关联规则发现
关联规则用于发现大型数据集中的规则模式,例如一组元组中两个项目的存在情况。经典的例子是购物篮分析,即寻找经常一起购买的商品。
关联规则由前提和结果组成,前提和结果可以是单个项目或项目组。例如,规则 skis → ski poles 表明购买滑雪板(前提)通常会伴随着购买滑雪杖(结果)。一个著名的超市销售规则表明尿布和啤酒之间存在联系,这可以解释为父亲经常购买尿布,而很多父亲也通常会被啤酒吸引。通过将啤酒移到尿布区,超市的利润得到了提高。
可以精确测量关联规则的质量,定义了支持度和置信度两个属性:
-
支持度
:满足规则前提和结果的观察的比例。
-
置信度
:在满足前提的观察中,满足结果的观察的比例。
数据挖掘中关联规则发现的问题可以表述为:找到所有支持度和置信度高于指定值的关联规则。例如,在图 13.17 中,可以看到支持度和置信度高于或等于 0.25 的关联规则。如果只对支持度和置信度都高于 0.4 的规则感兴趣,那么只会提取规则 jacket → T - shirt 和 T - shirt → jacket。
关联规则问题的变体,通过不同的数据提取但本质上使用相同的搜索算法,可以回答许多其他查询。例如,查找一起销售且具有相同促销的商品,或在夏季销售但冬季不销售的商品,或只有放在一起时才一起销售的商品。需要不同算法的问题变体可以研究与时间相关的销售系列,例如同一客户按顺序购买的商品。这些规则在组织邮购销售的促销活动中显然很有用。关联规则和模式搜索不仅可以用于购物篮分析,还可以用于医学等领域,例如指示抗生素耐药性在抗菌谱中同时存在的情况,或糖尿病发病十年后可能导致失明的情况。
4.2.2 离散化
离散化是数据准备中的一个典型步骤,它允许使用几个离散值来表示连续的值区间,选择这些离散值是为了使现象更容易观察。例如,血压值可以简单地离散化为‘high’、‘average’和‘low’三个类别,这个操作可以随后将离散的血压值与药物摄入进行关联。
4.2.3 分类
分类旨在将现象归类到预定义的类别中。现象通常以基本观察记录(元组)的形式呈现。分类器是执行分类的算法,它使用一组已经分类的现象作为训练集自动构建,然后用于对通用现象进行分类。通常,分类器以决策树的形式呈现,树中的节点用允许做出决策的条件标记,这些条件涉及存储现象的关系的属性。当现象由大量属性描述时,分类器还负责选择少数重要属性,将它们与无关属性分开。例如,在对保险公司的政策进行分类时,分类器可能首先确定定义政策风险的唯一重要属性是驾驶员的年龄和车辆类型,然后构建一个决策树,将 23 岁以下的驾驶员或驾驶跑车和卡车的驾驶员归类为高风险。
4.3 数据挖掘的展望
数据挖掘是最近发展起来的,是各种应用需求的结果。它是一个跨学科领域,使用数据库、人工智能和统计学等大型主题领域的知识。它是一个现代学科,仍处于发展的早期阶段,但发展非常迅速。
目前,数据挖掘领域存在一些问题。首先,有必要对其进行系统化,以便将各种数据挖掘问题放在一起看待。到目前为止,研究人员分别考虑这些问题,并使用特定的系统来管理每个特定问题。预计在不久的将来,会定义数据挖掘问题的标准范式以及解决这些问题的通用技术。其次,需要处理大型数据集的管理问题。目前的数据挖掘算法还不能保证在处理大型数据集时具有高可扩展性。
综上所述,数据仓库的分析、开发和数据挖掘是一个复杂而又相互关联的领域,随着技术的不断发展,它们将在更多的领域发挥重要作用,帮助企业做出更明智的决策。
5. 数据仓库架构与操作的总结与对比
5.1 架构模式对比
| 架构模式 | 优点 | 缺点 | 适用场景 |
|---|---|---|---|
| 星型模式 | 简单,可创建简单查询接口 | - | 对查询接口简单性要求高的场景 |
| 雪花模式 | 明确表示层次结构,减少冗余和异常 | 稍复杂 | 对数据冗余和异常要求严格的场景 |
5.2 数据操作对比
| 操作类型 | 操作方式 | 作用 | 复杂度 |
|---|---|---|---|
| 钻取 | 添加分析维度,细分数据,通常需重新制定和评估查询 | 深入了解数据细节 | 较高,涉及查询重写 |
| 上卷 | 消除分析维度,重新聚合数据,可在查询结果上进行 | 宏观把握数据 | 较低,直接在结果操作 |
| 数据立方体(with cube) |
在查询中添加
with cube
子句,构建所有可能聚合
| 全面分析数据聚合情况 | 复杂度随分组属性数量指数级增长 |
| 数据立方体(with roll up) |
在查询中添加
with roll up
子句,构建渐进式聚合
| 逐步分析数据聚合 | 复杂度随分组属性数量线性增长 |
5.3 索引技术对比
| 索引类型 | 原理 | 优点 | 缺点 | 适用场景 |
|---|---|---|---|---|
| 位图索引 | 将每个元组表示为位向量元素,叶子节点为索引值包含向量,通过位操作筛选元组 | 高效创建合取和析取,进行代数运算 | 表修改时难管理 | 表数据相对稳定,需频繁筛选数据场景 |
| 连接索引 | 基于维度键构建,叶子节点指向事实表元组 | 高效执行维度表和事实表连接 | - | 需频繁进行表连接操作场景 |
6. 数据挖掘案例分析
6.1 购物篮分析案例
以下是一个简单的购物篮分析示例,假设我们有一个包含交易信息的表
Transactions
:
-- 创建交易表
CREATE TABLE Transactions (
TransactionID INT,
Date DATE,
Goods VARCHAR(50),
Qty INT,
Price DECIMAL(10, 2)
);
-- 插入示例数据
INSERT INTO Transactions (TransactionID, Date, Goods, Qty, Price)
VALUES
(1, '17/12/98', 'ski - pants', 1, 140),
(1, '17/12/98', 'boots', 1, 180),
(2, '18/12/98', 'T - shirt', 1, 25),
(2, '18/12/98', 'jacket', 1, 300),
(2, '18/12/98', 'boots', 1, 70),
(3, '18/12/98', 'jacket', 1, 300),
(4, '19/12/98', 'jacket', 1, 300),
(4, '19/12/98', 'T - shirt', 3, 25);
我们可以使用 SQL 和相关算法来发现关联规则。例如,要找出支持度和置信度高于一定值的关联规则,我们可以按以下步骤操作:
1. 计算每个商品组合的出现次数。
2. 根据出现次数计算支持度和置信度。
3. 筛选出支持度和置信度高于指定值的规则。
6.2 保险政策分类案例
假设我们有一个保险政策表
Policies
:
-- 创建保险政策表
CREATE TABLE Policies (
PolicyNumber INT,
Age INT,
AutoType VARCHAR(50),
RiskLevel VARCHAR(10)
);
-- 插入训练数据
INSERT INTO Policies (PolicyNumber, Age, AutoType, RiskLevel)
VALUES
(1, 20, 'Sports', 'High'),
(2, 25, 'Sedan', 'Low'),
(3, 22, 'Trucks', 'High'),
(4, 30, 'SUV', 'Low');
我们可以使用这些数据训练一个分类器(如决策树),步骤如下:
1. 选择合适的算法(如 ID3、C4.5 等)。
2. 使用训练数据构建决策树。
3. 使用构建好的决策树对新的保险政策进行分类。
7. 数据仓库与数据挖掘的未来发展趋势
7.1 技术融合趋势
未来,数据仓库和数据挖掘技术将与人工智能、机器学习等技术更紧密地融合。例如,利用深度学习算法对数据仓库中的复杂数据进行更精准的挖掘和分析,提高数据挖掘的效率和准确性。
7.2 实时处理需求
随着业务的快速发展,对数据实时处理的需求越来越高。数据仓库需要具备实时数据加载和处理能力,数据挖掘也需要能够实时分析新产生的数据,以便企业及时做出决策。
7.3 云服务的普及
云服务提供商提供了强大的计算和存储资源,使得企业可以更轻松地构建和管理数据仓库和数据挖掘系统。未来,越来越多的企业将选择使用云服务来满足其数据处理和分析需求。
7.4 数据安全与隐私保护
随着数据的重要性日益增加,数据安全和隐私保护将成为数据仓库和数据挖掘领域的重要关注点。企业需要采取更严格的安全措施来保护数据,同时遵守相关的法律法规。
通过对数据仓库的架构、操作、开发以及数据挖掘的深入了解,我们可以更好地利用数据来支持企业的决策和发展。在未来的发展中,不断关注技术的变化和趋势,将有助于我们在这个领域取得更好的成果。
graph LR
classDef process fill:#E5F6FF,stroke:#73A6FF,stroke-width:2px;
A(数据仓库):::process --> B(架构设计):::process
A --> C(数据分析操作):::process
A --> D(数据仓库开发):::process
A --> E(数据挖掘):::process
B --> B1(星型模式):::process
B --> B2(雪花模式):::process
C --> C1(查询制定接口):::process
C --> C2(钻取和上卷):::process
C --> C3(数据立方体):::process
D --> D1(ROLAP):::process
D --> D2(MOLAP):::process
E --> E1(数据挖掘过程):::process
E --> E2(数据挖掘问题):::process
E --> E3(数据挖掘展望):::process
E2 --> E21(关联规则发现):::process
E2 --> E22(离散化):::process
E2 --> E23(分类):::process
以上流程图展示了数据仓库相关内容的整体结构,包括架构设计、数据分析操作、开发方式以及数据挖掘等方面,各部分之间相互关联,共同构成了数据仓库的完整体系。
超级会员免费看

被折叠的 条评论
为什么被折叠?



