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

数据仓库之维度建模

维度建模(Dimensional Modeling)是一种用于数据仓库设计的方法,旨在优化查询性能并提高数据的可读性。它通过组织数据为事实表和维度表的形式,提供直观的、易于理解的数据模型,使业务用户能够轻松地进行数据分析和查询。

维度建模的基本概念

  1. 事实表(Fact Table)

    • 定义:存储与业务过程相关的度量数据(Measures),如销售金额、订单数量等。
    • 特征
      • 度量:数值型数据,可以进行聚合(如求和、平均)。
      • 外键:引用多个维度表的主键。
      • 记录量大:每条记录代表一个业务事件或事务。
  2. 维度表(Dimension Table)

    • 定义:存储业务实体的描述性信息,为事实表中的度量提供上下文。
    • 特征
      • 主键:单一列,通常是代理键(Surrogate Key)。
      • 属性:多个描述性的属性(如客户姓名、产品类别、日期等)。
      • 记录量小:相对事实表记录数较少,且变化缓慢。

维度建模的步骤

  1. 选择业务过程:确定需要建模的业务过程,如销售、订单、库存等。
  2. 声明粒度:确定事实表的粒度,即一条事实记录所代表的业务事件的详细程度。
  3. 识别维度:确定与业务过程相关的维度,如时间、地点、产品、客户等。
  4. 识别事实:确定需要在事实表中存储的度量数据。

维度建模的典型模式

  1. 星形模型(Star Schema)

    • 结构:一个中心事实表,周围连接多个维度表,结构类似星形。
    • 特点:结构简单、查询性能高、易于理解和实现。
    • 示例:销售数据仓库的星形模型。
  2. 雪花模型(Snowflake Schema)

    • 结构:星形模型的扩展,维度表进行规范化处理,进一步分解为子维度表。
    • 特点:数据冗余减少、存储空间节省、查询性能稍低于星形模型。
    • 示例:产品维度表进一步分解为产品类别表、品牌表等。
  3. 星座模型(Constellation Schema)

    • 结构:多个事实表共享维度表,形成复杂的多星形结构。
    • 特点:能够支持多个业务过程的分析需求,灵活性高。
    • 示例:销售和订单数据仓库共享时间和客户维度。

维度建模的设计技巧

  1. 代理键(Surrogate Key)

    • 定义:人工生成的唯一标识符,作为维度表的主键。
    • 优点:避免使用业务主键,提高数据一致性和查询性能。
    • 实现:通常使用自增序列或 UUID 作为代理键。
  2. 缓慢变化维度(Slowly Changing Dimensions, SCD)

    • 类型
      • SCD Type 1:直接覆盖旧值,简单快速。
      • SCD Type 2:新增记录,保留历史数据,适合需要追踪变化的场景。
      • SCD Type 3:增加字段,存储历史和当前值,适合需要追踪最近一次变化的场景。
    • 选择:根据业务需求选择合适的 SCD 类型。
  3. 退化维度(Degenerate Dimension, DD)

    • 定义:事实表中没有对应维度表的维度,通常是业务事务号或标识符。
    • 用途:简化模型设计,减少维度表的数量。
  4. 多值维度(Multi-valued Dimension)

    • 定义:一个事实记录与多个维度值相关联。
    • 实现:通常通过桥接表(Bridge Table)解决多对多关系。
    • 示例:一个订单可以包含多个产品。
  5. 度量聚合(Aggregated Measures)

    • 定义:对度量数据进行预聚合,如月度销售总额、季度利润等。
    • 优点:提高查询性能,减少运行时的计算量。
    • 实现:在事实表中增加预聚合列或创建汇总事实表。

维度建模的示例

假设我们有一个零售商的销售数据仓库,以下是一个星形模型的示例:

销售事实表(Sales Fact Table)
时间键(Time Key)产品键(Product Key)客户键(Customer Key)销售金额(Sales Amount)销售数量(Sales Quantity)
20220101100150011000.0010
20220101100250021500.0015
...............
时间维度表(Time Dimension Table)
时间键(Time Key)年(Year)季度(Quarter)月(Month)日(Day)
202201012022Q111
202201022022Q112
...............
产品维度表(Product Dimension Table)
产品键(Product Key)产品名称(Product Name)类别(Category)品牌(Brand)
1001产品A电子产品品牌X
1002产品B家居用品品牌Y
............
客户维度表(Customer Dimension Table)
客户键(Customer Key)客户姓名(Customer Name)地址(Address)联系方式(Contact Info)
5001客户甲地址A联系方式A
5002客户乙地址B联系方式B
............

维度建模的优缺点

优点
  • 高效查询:模型设计优化了查询性能,适合复杂的分析查询。
  • 易于理解:维度建模结构简单直观,业务用户容易理解。
  • 灵活扩展:新增维度和事实表较为方便,支持业务需求变化。
缺点
  • 维护成本:需要处理缓慢变化维度,数据清洗和转换过程复杂。
  • 数据冗余:维度表中可能存在数据冗余,增加存储开销。
  • 复杂性:随着业务复杂度增加,模型设计和维护变得更加复杂。

维度建模是数据仓库设计中的核心技术,通过合理的模型设计,可以显著提升数据分析和查询的效率,为业务决策提供强有力的支持。

相关文章:

数据仓库之维度建模

维度建模(Dimensional Modeling)是一种用于数据仓库设计的方法,旨在优化查询性能并提高数据的可读性。它通过组织数据为事实表和维度表的形式,提供直观的、易于理解的数据模型,使业务用户能够轻松地进行数据分析和查询…...

解决远程服务器连接报错

最近使用服务器进行数据库连接和使用的时候出现了一个报错: Error response from daemon: Conflict. The container name “/mysql” is already in use by container “1bd3733123219372ea7c9377913da661bb621156d518b0306df93cdcceabb8c4”. You have to remove …...

通过电脑查看Wi-Fi密码的方法,提供三种方式

式一: 右击桌面右下角的网络图标,依次选择【网络和Internet设置】、【WLAN】、【网络和共享中心】。点击已连接的无线网络。依次点击【无线属性】、【安全】,勾选下方【显示字符】即可。 方式二: 在开始菜单输入“cmd”进入命令…...

Nvidia 目前的市值为 3.01 万亿美元,超过苹果Apple

人工智能的繁荣将英伟达的市值推高到足以使其成为全球第二大最有价值的公司。 英伟达已成为全球第二大最有价值的公司。周三下午,这家芯片制造巨头的市值达到 3.01 万亿美元,领先于苹果公司的 3 万亿美元。 喜好儿网AIGC专区:https://heehe…...

用langchain搭配最新模型ollama打造属于自己的gpt

langchain 前段时间去玩了一下langchain,熟悉了一下大模型的基本概念,使用等。前段时间meta的ollama模型发布了3.0,感觉还是比较强大的,在了解过后,自己去用前后端代码,调用ollama模型搭建了一个本地的gpt应用。 核心逻辑 开始搭…...

工业互联网基本概念及关键技术(295页PPT)

资料介绍: 工业互联网的核心是通过工业互联网平台把设备、生产线、工厂、供应商、产品和客户紧密地连接融合起来。这种连接能够形成跨设备、跨系统、跨厂区、跨地区的互联互通,从而提高效率,推动整个制造服务体系智能化。同时,工…...

Python pandas openpyxl excel合并单元格,设置边框,背景色

Python pandas openpyxl excel合并单元格,设置边框,背景色 1. 效果图2. 源码参考 1. 效果图 pandas设置单元格背景色,字体颜色,边框 openpyxl合并单元格,设置丰富的字体 2. 源码 # excel数字与列名互转 import o…...

【vue3|第7期】 toRefs 与 toRef 的深入剖析

日期:2024年6月6日 作者:Commas 签名:(ง •_•)ง 积跬步以致千里,积小流以成江海…… 注释:如果您觉得有所帮助,帮忙点个赞,也可以关注我,我们一起成长;如果有不对的地方&#xff…...

git代码冲突处理软件P4Merge

文章目录 1. 下载安装2. 配置脚本参考链接 1. 下载安装 下载地址:https://www.perforce.com/downloads/helix-visual-client-p4v 下载教程:http://blog.csdn.net/wirelessqa/article/details/9035215 这里下载之前需要注册。 2. 配置脚本 编写一个全局…...

Unity物体材质属性Offset动态偏移

Unity物体材质属性Offset动态偏移 MeshRenderer mr;float offset;public float scrollSpeed 0.5F;private void Start(){mr GetComponent<MeshRenderer>();}void Update(){offset -Time.time * scrollSpeed;mr.material.mainTextureOffset new Vector2(0, -offset);}…...

【数据结构】筛选法建堆

&#x1f49e;&#x1f49e; 前言 hello hello~ &#xff0c;这里是大耳朵土土垚~&#x1f496;&#x1f496; &#xff0c;欢迎大家点赞&#x1f973;&#x1f973;关注&#x1f4a5;&#x1f4a5;收藏&#x1f339;&#x1f339;&#x1f339; &#x1f4a5;个人主页&#x…...

DevExpress Installed

一、What’s Installed 统一安装程序将DevExpress控件和库注册到Visual Studio中&#xff0c;并安装DevExpress实用工具、演示应用程序和IDE插件。 Visual Studio工具箱中的DevExpress控件 Visual Studio中的DevExpress菜单 Demo Applications 演示应用程序 Launch the Demo…...

解决QT QMessageBox 弹出需点击两次才能关闭问题

放个链接不迷路&#xff1a;添加链接描述...

Milvus--向量数据库

Milvus 是一个开源的向量数据库&#xff0c;专为高维向量数据的存储、查询和检索而设计。它支持多种类型的向量数据&#xff0c;如浮点数向量、整数向量等&#xff0c;并且提供了强大的向量相似度计算功能。Milvus采用分布式架构&#xff0c;可以轻松地扩展到大规模数据集&…...

php质量工具系列之PHPCPD

PHPCPD 用于检测重复代码&#xff0c;直观的说就是复制粘贴再稍微改改 该工具作者已经 停止维护 安装 composer global require --dev sebastian/phpcpd执行 phpcpd --log-pmd phpcpd_result.xml ./app参数介绍 --log-pmd 将结果保存在phpcpd_result.xml 中 ./app 是phpcpd扫…...

Android14 WMS-窗口绘制之relayoutWindow流程(二)-Server端

本文接着如下文章往下讲 Android14 WMS-窗口绘制之relayoutWindow流程(一)-Client端-CSDN博客 然后就到了Server端WMS的核心实现方法relayoutWindow里 WindowManagerService.java - OpenGrok cross reference for /frameworks/base/services/core/java/com/android/server…...

安全测试 之 安全漏洞:SQL注入

1. 背景 持续学习安全测试ing&#xff0c;安全测试是在IT软件产品的生命周期中&#xff0c;特别是产品开发基本完成到发布阶段&#xff0c;对产品进行检验以验证产品是否符合安全需求定义和产品质量标准的过程。也就是说安全测试是建立在功能测试的基础上进行的测试。 2. SQL…...

CUDA和驱动版本之间的对应关系

这个之前总结过&#xff0c;可是不太好找&#xff0c;专门写一篇博客再总结一下&#xff1a; 1. CUDA 12.5 Release Notes — Release Notes 12.5 documentation 相信很多朋友有一样的需求。...

MDK(μVsion3)问题总结及解决方法

问题 1&#xff1a;MDK 工具的 CARM 编译器&#xff1f; 我原来对 CARM 编译器比较熟悉&#xff0c;想用 CARM 编译器编译工程&#xff0c;但是却弹出一个不能执 行“cc”的错误&#xff0c;到 KEIL 网站查下才知道原因&#xff1a;由于 CARM 编译器是比较老的编译器&#xff0…...

手眼标定学习笔记

目录 标定代码&#xff1a; 手眼标定原理学习 什么是手眼标定 手眼标定的目的 eye in hand eye to hand AXXB问题的求解 标定代码&#xff1a; GitHub - pumpkin-ws/HandEyeCalib 推荐博文&#xff1a; https://zhuanlan.zhihu.com/p/486592374 手眼标定原理学习 参…...

KubeSphere 容器平台高可用:环境搭建与可视化操作指南

Linux_k8s篇 欢迎来到Linux的世界&#xff0c;看笔记好好学多敲多打&#xff0c;每个人都是大神&#xff01; 题目&#xff1a;KubeSphere 容器平台高可用&#xff1a;环境搭建与可视化操作指南 版本号: 1.0,0 作者: 老王要学习 日期: 2025.06.05 适用环境: Ubuntu22 文档说…...

DeepSeek 赋能智慧能源:微电网优化调度的智能革新路径

目录 一、智慧能源微电网优化调度概述1.1 智慧能源微电网概念1.2 优化调度的重要性1.3 目前面临的挑战 二、DeepSeek 技术探秘2.1 DeepSeek 技术原理2.2 DeepSeek 独特优势2.3 DeepSeek 在 AI 领域地位 三、DeepSeek 在微电网优化调度中的应用剖析3.1 数据处理与分析3.2 预测与…...

Nginx server_name 配置说明

Nginx 是一个高性能的反向代理和负载均衡服务器&#xff0c;其核心配置之一是 server 块中的 server_name 指令。server_name 决定了 Nginx 如何根据客户端请求的 Host 头匹配对应的虚拟主机&#xff08;Virtual Host&#xff09;。 1. 简介 Nginx 使用 server_name 指令来确定…...

图表类系列各种样式PPT模版分享

图标图表系列PPT模版&#xff0c;柱状图PPT模版&#xff0c;线状图PPT模版&#xff0c;折线图PPT模版&#xff0c;饼状图PPT模版&#xff0c;雷达图PPT模版&#xff0c;树状图PPT模版 图表类系列各种样式PPT模版分享&#xff1a;图表系列PPT模板https://pan.quark.cn/s/20d40aa…...

九天毕昇深度学习平台 | 如何安装库?

pip install 库名 -i https://pypi.tuna.tsinghua.edu.cn/simple --user 举个例子&#xff1a; 报错 ModuleNotFoundError: No module named torch 那么我需要安装 torch pip install torch -i https://pypi.tuna.tsinghua.edu.cn/simple --user pip install 库名&#x…...

CVE-2020-17519源码分析与漏洞复现(Flink 任意文件读取)

漏洞概览 漏洞名称&#xff1a;Apache Flink REST API 任意文件读取漏洞CVE编号&#xff1a;CVE-2020-17519CVSS评分&#xff1a;7.5影响版本&#xff1a;Apache Flink 1.11.0、1.11.1、1.11.2修复版本&#xff1a;≥ 1.11.3 或 ≥ 1.12.0漏洞类型&#xff1a;路径遍历&#x…...

GitFlow 工作模式(详解)

今天再学项目的过程中遇到使用gitflow模式管理代码&#xff0c;因此进行学习并且发布关于gitflow的一些思考 Git与GitFlow模式 我们在写代码的时候通常会进行网上保存&#xff0c;无论是github还是gittee&#xff0c;都是一种基于git去保存代码的形式&#xff0c;这样保存代码…...

AI+无人机如何守护濒危物种?YOLOv8实现95%精准识别

【导读】 野生动物监测在理解和保护生态系统中发挥着至关重要的作用。然而&#xff0c;传统的野生动物观察方法往往耗时耗力、成本高昂且范围有限。无人机的出现为野生动物监测提供了有前景的替代方案&#xff0c;能够实现大范围覆盖并远程采集数据。尽管具备这些优势&#xf…...

uniapp 开发ios, xcode 提交app store connect 和 testflight内测

uniapp 中配置 配置manifest 文档&#xff1a;manifest.json 应用配置 | uni-app官网 hbuilderx中本地打包 下载IOS最新SDK 开发环境 | uni小程序SDK hbulderx 版本号&#xff1a;4.66 对应的sdk版本 4.66 两者必须一致 本地打包的资源导入到SDK 导入资源 | uni小程序SDK …...

密码学基础——SM4算法

博客主页&#xff1a;christine-rr-CSDN博客 ​​​​专栏主页&#xff1a;密码学 &#x1f4cc; 【今日更新】&#x1f4cc; 对称密码算法——SM4 目录 一、国密SM系列算法概述 二、SM4算法 2.1算法背景 2.2算法特点 2.3 基本部件 2.3.1 S盒 2.3.2 非线性变换 ​编辑…...