当前位置: 首页 > article >正文

【数据挖掘】数据仓库

数据仓库

  • 目录:
  • 数据仓库相关知识点笔记
    • 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.3.1 数据仓库的设计的商务分析框架
      • 4.3.2 数据仓库的设计过程
      • 4.3.3 数据仓库用于信息处理
      • 4.3.4 从联机分析处理到多维数据挖掘
    • 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.kler.cn/a/553411.html

相关文章:

  • 《深度学习》——自然语言处理(NLP)
  • DeepSeek-R1:使用KTransformers部署(保姆级教程)
  • 月之暗面-KIMI-发布最新架构MoBA
  • 实现历史数据的插入、更新和版本管理-拉链算法
  • 我的2025年计划
  • 红外图像与可见光图像在目标检测时的区别
  • 【数据分析】通过个体和遗址层面的遗传相关性网络分析
  • 浪潮信息元脑R1服务器重塑大模型推理新标准
  • 【核心算法篇十四】《深度解密DeepSeek量子机器学习:VQE算法加速的黑科技与工程实践》
  • MySQL 多表查询技巧和高阶操作实例1
  • Coze扣子怎么使用更强大doubao1.5模型
  • Brave132编译指南 MacOS篇 - 构筑开发环境(二)
  • 优雅地使用枚举参数,让项目Spring Boot项目更加优雅
  • 12.1 Android中协程的基本使用
  • java.2.19
  • Hadoop之HDFS的使用
  • PH热榜 | 2025-02-19
  • 元数据服务器的概述
  • JavaScript与AJAX:让网页动起来的魔法与秘密
  • JWT 令牌