【数据挖掘】数据仓库

server/2025/2/26 23:05:24/

数据仓库

  • 目录:
  • 数据仓库相关知识点笔记
    • 4.2 数据仓库建模:数据立方体与 OLAP
      • 4.2.1 数据立方体:一种多维数据模型
      • 4.2.2 星形、雪花形和事实星座:多维数据模型的模式
      • 4.2.3 维:概念分层的作用
      • 4.2.4 度量的分类和计算
      • 4.2.5 典型的 OLAP 操作
      • 4.2.6 查询多维数据库的星网查询模型
    • 4.3 数据仓库的设计与使用
    • 4.4 数据仓库的实现
      • 4.4.1 数据立方体的有效计算:概述
      • 4.4.2 索引 OLAP 数据:位图索引和连接索引
      • 星形模型
      • 4.4.3 OLAP 查询的有效处理
      • 4.4.4 OLAP 服务器结构:ROLAP、MOLAP、HOLAP 的比较
      • 1. Python 模拟数据立方体的 OLAP 操作(以 Pandas 库为例)
    • 4.5 数据泛化:面向属性的归纳
      • 4.5.1 数据概括的面向属性的归纳
      • 4.5.2 面向属性归纳的有效实现
      • 2. 使用 Python 进行面向属性的归纳示例
      • 4.5.3 比较的面向属性归纳
      • 3. SQL 示例(以 MySQL 为例)模拟 ROLAP 操作

目录:

数据仓库相关知识点笔记

在这里插入图片描述

4.2 数据仓库建模:数据立方体与 OLAP

4.2.1 数据立方体:一种多维数据模型

数据立方体是多维数据模型的一种表现形式,用于组织和存储数据,以支持高效的数据分析和 OLAP 操作。它将数据按照多个维度进行划分,每个维度代表数据的一个特征或属性,不同维度的组合形成了数据的不同视角。

4.2.2 星形、雪花形和事实星座:多维数据模型的模式

  • 星形模型:由一个事实表和多个维度表组成。事实表存储业务过程的度量值,维度表围绕事实表,包含描述性信息,结构简单,查询效率高。
  • 雪花模型:是星型模型的扩展,维度表进一步规范化,减少数据冗余,但会增加查询时的关联操作
  • 事实星座:多个事实表共享维度表,适用于复杂的业务场景,可处理多个不同业务过程的数据。

4.2.3 维:概念分层的作用

维是数据立方体的一个重要组成部分,用于描述数据的某个方面。概念分层在维中起着组织和抽象数据的作用,它将数据从低层次的具体概念逐步抽象到高层次的概括概念,例如时间维可以从日 - 月 - 季度 - 年进行分层,方便进行不同层次的数据分析。
在这里插入图片描述
在这里插入图片描述

4.2.4 度量的分类和计算

度量是事实表中的数值型数据,用于表示业务过程的量化指标。度量可分为可加性度量(如销售额,可在所有维度上进行汇总)、半可加性度量(如账户余额,不能在时间维度上随意汇总)和不可加性度量(如比率,不能直接汇总)。计算方式包括求和、计数、平均值、最大值、最小值等

4.2.5 典型的 OLAP 操作

  • 切片在某一维上选定一个特定的值,从数据立方体中选取一个二维子集。
  • 切块:在多个维上选定若干个值,从数据立方体中选取一个子立方体。
  • 下钻从较高层次的概念深入到较低层次的概念进行数据分析
  • 上卷:从较低层次的概念汇总到较高层次的概念进行数据分析。
  • 旋转:改变数据立方体的视角,重新排列维的位置。
    在这里插入图片描述

4.2.6 查询多维数据库的星网查询模型

星网查询模型是用于查询多维数据库的一种模型,它通过建立星型结构和网络结构的结合,优化查询路径,提高查询效率,以满足复杂的多维查询需求。

4.3 数据仓库的设计与使用

4.3.1 数据仓库的设计的商务分析框架

从商务角度出发,构建数据仓库设计的框架,包括确定业务目标、分析业务流程、识别关键数据需求等,确保数据仓库能够支持企业的商务决策和分析需求。
在这里插入图片描述

4.3.2 数据仓库的设计过程

包括需求分析、概念设计、逻辑设计和物理设计等阶段。需求分析收集业务用户的需求;概念设计确定数据仓库的主题域、维度和度量;逻辑设计将概念模型转换为具体的数据库模式;物理设计考虑数据的存储结构、索引策略等,以提高数据访问性能。

4.3.3 数据仓库用于信息处理

数据仓库为企业提供了统一的、集成的数据源,用于支持各种信息处理活动,如报表生成、数据分析、数据挖掘等,帮助企业发现潜在的商业机会、优化业务流程和进行决策支持。

4.3.4 从联机分析处理到多维数据挖掘

OLAP 提供了多角度分析数据的功能,而多维数据挖掘则在此基础上进一步深入,通过应用数据挖掘算法从多维数据中发现隐藏的模式、趋势和关联规则等知识,为企业提供更深入的洞察

4.4 数据仓库的实现

4.4.1 数据立方体的有效计算:概述

介绍如何高效地计算数据立方体,以减少存储和计算资源的消耗。包括一些优化算法和技术,如预计算、增量计算等,以提高数据立方体的生成和更新效率。

4.4.2 索引 OLAP 数据:位图索引和连接索引

  • 位图索引:一种高效的索引结构,通过使用位向量来表示数据的存在与否,适用于数据仓库中大量的低基数列,可加速查询操作。
  • 连接索引:用于加速表之间的连接操作,通过预先计算和存储连接结果,减少查询时的连接计算量。

星形模型

由一个事实表和多个维度表组成。事实表包含业务的度量值(如销售额、销售量)和外键,这些外键关联到各个维度表。维度表包含描述性信息,如产品名称、地区名称、时间信息等。
优点是结构简单,查询效率高,易于理解和实现。
缺点是可能存在数据冗余


在这里插入图片描述

4.4.3 OLAP 查询的有效处理

研究如何优化 OLAP 查询的执行过程,包括查询优化算法、查询重写技术等,以提高查询响应速度,满足用户对实时数据分析的需求。

4.4.4 OLAP 服务器结构:ROLAP、MOLAP、HOLAP 的比较

  • ROLAP(关系型 OLAP):数据存储在关系型数据库中,通过 SQL 查询进行数据分析,灵活性高,但查询性能可能受限于数据库的性能。

  • MOLAP(多维 OLAP)数据以多维数组的形式存储在专有的多维数据库中,查询性能高,但数据存储成本较高,灵活性相对较差

  • HOLAP(混合型 OLAP):结合了 ROLAP 和 MOLAP 的优点,部分数据以多维数组形式存储,部分数据存储在关系型数据库中,在性能和灵活性之间取得平衡。
    在这里插入图片描述

  • 1. Python 模拟数据立方体的 OLAP 操作(以 Pandas 库为例)

import pandas as pd# 模拟一个销售数据集
data = {'Product': ['A', 'A', 'B', 'B'],'Region': ['North', 'South', 'North', 'South'],'Year': [2020, 2020, 2020, 2020],'Sales': [100, 200, 150, 250]
}
df = pd.DataFrame(data)# 切片操作:选择 Region 为 North 的数据
slice_data = df[df['Region'] == 'North']
print("切片操作结果:")
print(slice_data)# 切块操作:选择 Region 为 North 且 Product 为 A 的数据
dice_data = df[(df['Region'] == 'North') & (df['Product'] == 'A')]
print("\n切块操作结果:")
print(dice_data)# 上卷操作:按 Year 进行汇总
rollup_data = df.groupby('Year')['Sales'].sum().reset_index()
print("\n上卷操作结果:")
print(rollup_data)# 下钻操作:假设我们原本按 Year 汇总,现在按 Year 和 Product 汇总
drilldown_data = df.groupby(['Year', 'Product'])['Sales'].sum().reset_index()
print("\n下钻操作结果:")
print(drilldown_data)

4.5 数据泛化:面向属性的归纳

4.5.1 数据概括的面向属性的归纳

通过对数据的属性进行概括和抽象,将低层次的数据转换为高层次的概念,减少数据量的同时保留数据的主要特征和模式,用于数据分析和知识发现。

4.5.2 面向属性归纳的有效实现

介绍实现面向属性归纳的有效算法和技术,包括数据预处理、属性选择、概念分层等步骤的优化,以提高归纳的效率和准确性。

2. 使用 Python 进行面向属性的归纳示例

import pandas as pd# 模拟一个学生成绩数据集
data = {'Name': ['Alice', 'Bob', 'Charlie', 'David'],'Age': [18, 19, 20, 21],'Grade': ['A', 'B', 'C', 'B']
}
df = pd.DataFrame(data)# 对 Age 属性进行概念分层,这里简单分为 'Young' 和 'Old'
def age_stratification(age):if age < 20:return 'Young'else:return 'Old'df['Age_Group'] = df['Age'].apply(age_stratification)# 对数据进行归纳,统计每个 Age_Group 的人数和不同 Grade 的分布
grouped = df.groupby(['Age_Group', 'Grade']).agg({'Name': 'count'}).reset_index()
grouped.rename(columns={'Name': 'Count'}, inplace=True)
print("面向属性归纳结果:")
print(grouped)

在这里插入图片描述

4.5.3 比较的面向属性归纳

对不同的面向属性归纳方法进行比较,分析它们的优缺点和适用场景,帮助选择最合适的归纳方法。

3. SQL 示例(以 MySQL 为例)模拟 ROLAP 操作

-- 创建一个简单的销售事实表
CREATE TABLE sales_fact (product_id INT,region_id INT,year INT,sales_amount DECIMAL(10, 2),PRIMARY KEY (product_id, region_id, year)
);-- 插入示例数据
INSERT INTO sales_fact (product_id, region_id, year, sales_amount)
VALUES (1, 1, 2020, 100),(1, 2, 2020, 200),(2, 1, 2020, 150),(2, 2, 2020, 250);-- 创建产品维度表
CREATE TABLE product_dim (product_id INT PRIMARY KEY,product_name VARCHAR(50)
);INSERT INTO product_dim (product_id, product_name)
VALUES (1, 'Product A'),(2, 'Product B');-- 创建地区维度表
CREATE TABLE region_dim (region_id INT PRIMARY KEY,region_name VARCHAR(50)
);INSERT INTO region_dim (region_id, region_name)
VALUES (1, 'North'),(2, 'South');-- 执行一个简单的 ROLAP 查询,计算每个地区的总销售额
SELECT r.region_name, SUM(s.sales_amount) AS total_sales
FROM sales_fact s
JOIN region_dim r ON s.region_id = r.region_id
GROUP BY r.region_name;

http://www.ppmy.cn/server/170870.html

相关文章

深度学习之特征提取

前言 深度学习就是把输入转换成一个高维的向量&#xff0c;之后利用这个向量去完成分类、回归等任务。 深度学习特征工程知识图谱 1. 特征提取的本质 核心目标&#xff1a;将原始数据→高维语义特征向量 监督驱动&#xff1a;标签决定特征提取方向 典型架构&#xff1a; …

matlab 海浪模型和舰艇动力学模型

1、内容简介 matlab148-海浪模型和舰艇动力学模型 可以交流、咨询、答疑 2、内容说明 略 3、仿真分析 略 4、参考论文 略

墨刀列表突然变得很小怎么办?

换个浏览器就好了 或者调整原浏览器比例

ubuntu 安全策略(等保)

windows 三个帐号屏保设置组策略,密码超时次数/审计记录&#xff1b; linux 应具有登录失败处理功能&#xff0c;应配置并启用结束会话、限制非法登录次数和当登录连接超时自动退出等相关措施。 1、在系统中新建测试用户&#xff0c;使用此用户登录时多次输入错误密码&…

vue3 -- 中实现子组件与父组件的双向数据绑定

前言 在 Vue3 中实现子组件与父组件的双向数据绑定,v-model 是最核心的机制。以下是基于最新实践的完整实现方案和技术解析(结合 Vue3.3+ 新特性): 一、使用 defineModel 宏(推荐方案) 1. 基础实现 子组件: <script setup> // 声明一个名为 modelValue 的双向绑…

http 协议和 https 协议的区别在哪里?【详情解答】

HTTP&#xff08;超文本传输协议&#xff09;和HTTPS&#xff08;超文本传输安全协议&#xff09;都是用于在网络上传输数据的协议&#xff0c;二者存在多方面的区别&#xff0c;具体如下&#xff1a; 安全性&#xff1a;这是HTTP和HTTPS最主要的区别。HTTP协议是明文传输数据…

深入理解 `Sinks.Empty<Void>` 和 `Mono<Void>`:如何触发完成信号并结合 WebSocket 示例

在响应式编程中&#xff0c;Sinks 是 Project Reactor 提供的一个强大工具&#xff0c;用于手动控制数据流的信号发射。Sinks.Empty<Void> 是一种特殊的 Sinks&#xff0c;它不发射任何数据&#xff0c;仅用于表示完成或错误信号。结合 Mono<Void>&#xff0c;它可…

【Python量化金融实战】-第1章:Python量化金融概述:1.1量化金融的定义与发展历程

本小节学习建议&#xff1a;掌握Python编程、统计学&#xff08;时间序列分析&#xff09;、金融学基础&#xff08;资产定价理论&#xff09;三者结合&#xff0c;是进入量化领域的核心路径。 &#x1f449; 点击关注不迷路 &#x1f449; 点击关注不迷路 文章目录 1.1 量化金…