数据仓库基础理论—维度建模(图文详解)

news2024/11/15 17:59:11

数据仓库基础理论—维度建模

维度建模是数据仓库设计中的一种核心方法,旨在以业务角度组织数据,使其更易于理解、查询和分析。
在这里插入图片描述

1. 维度模型的基本概念

1.1 事实表(Fact Table)

  • 事实表是维度模型的核心,存储了业务过程中的事实或事件,通常是数值型的数据,如销售金额、数量等。
  • 事实表通常比较“细长”,即列较少,但行较多,且行的增速快。

在这里插入图片描述

  • 事实表中包含了业务过程的度量(Measures),可以通过与维度表关联来进行分析和查询。

在这里插入图片描述
事实表是星型模式中的中心表格,用于存储业务事实或事件的数据,通常与多个维度表通过外键关联。

  • 数据类型:事实表包含两种类型的列:一种是实际的事实数据,如销售额、数量等;另一种是指向维度表的外键。
  • 主键:事实表的主键通常是一个由所有外键组成的复合键,这样可以确保每个事实行都能唯一地与其相关的维度组合。
  • 粒度:事实表通常包含同一级别的事实数据,可以是详细级别的事实或已经聚合的事实(如果包含聚合事实,则通常称为汇总表)。

在这里插入图片描述
当设计数据仓库中的事实表时,常见的三种类型是事务事实表、周期快照事实表和累积快照事实表。

事务事实表(Transactional Fact Table

事务型事实表用来记录各业务过程,它保存的是各业务过程的原子操作事件,即最细粒度的操作事件。

粒度是指事实表中一行数据所表达的业务细节程度。

  • 特点

    • 记录事务级别的事件或业务活动,通常是每个事务的单独记录。
    • 每条记录通常包含时间戳、事实数据和维度键。
    • 可能包含大量的细节数据,例如订单、交易、事件等。
      在这里插入图片描述
  • 适用场景

    • 需要详细记录每个事务的细节和具体事件。
    • 对数据的插入操作比较频繁,更新操作相对较少。
    • 适合支持实时或接近实时的数据加载。
  • 设计流程:

设计事务事实表时一般可遵循以下四个步骤。 选择业务过程→声明粒度→确认维度→确认事实。

  1. 选择业务过程:
    在业务系统中,选择我们感兴趣的业务过程,例如电商交易中的下单、取消订单、付款、退单等。每个业务过程对应一张事务型事实表。

  2. 声明粒度:
    确定每个业务过程的粒度,即定义每张事务型事实表的每行数据表示什么。应选择最细粒度,以满足各种详细需求。例如,订单事实表中的一行数据表示一个订单中的一个商品项。

  3. 确定维度:
    确定与每张事务型事实表相关的维度。应选择与业务过程相关的环境信息,丰富维度模型,以支持多样化的指标需求。

  4. 确定事实:
    确定每个业务过程的度量值,即可累加的数字类型的值,如次数、个数、金额等。


周期快照事实表(Periodic Snapshot Fact Table

周期快照事实表以具有规律性的、可预见的时间间隔来记录事实,主要用于分析一些存量型(例如商品库存,账户余额)或者状态型(空气温度,行驶速度)指标。

对于商品库存、账户余额这些存量型指标,业务系统中通常就会计算并保存最新结果,所以定期同步一份全量数据到数据仓库,构建周期型快照事实表,就能轻松应对此类统计需求,而无需再对事务型事实表中大量的历史记录进行聚合了。

  • 特点
    • 记录在给定周期内的状态或快照,通常是固定时间间隔(如每天、每周)的快照。
    • 每个快照周期内只存储一条记录,反映在该周期结束时的状态。
    • 包含当前周期内的聚合数据,如订单总额、库存量等。

在这里插入图片描述

  • 适用场景

    • 需要分析和比较不同时间点的状态变化。
    • 对历史数据的查询和分析比较频繁。
    • 适合用于周期性报告、趋势分析等场景。
  • 设计流程

  1. 确定粒度:
    周期型快照事实表的粒度由采样周期和维度描述决定。通常选择每日作为采样周期。维度根据统计指标确定,例如统计每个仓库中每种商品的库存,确定粒度为每日-仓库-商品。

  2. 确认事实:
    事实根据统计指标确定,例如统计每个仓库中每种商品的库存,则事实为商品库存。


累积快照事实表(Accumulating Snapshot Fact Table

累计快照事实表是基于一个业务流程中的多个关键业务过程联合处理而构建的事实表,如交易流程中的下单、支付、发货、确认收货业务过程。

累积型快照事实表通常具有多个日期字段,每个日期对应业务流程中的一个关键业务过程(里程碑)。

订单id用户id下单日期支付日期发货日期确认收货日期订单金额支付金额
100112342022-06-082022-06-092022-06-162022-06-1710001000

累积型快照事实表主要用于分析业务过程(里程碑)之间的时间间隔等需求。例如前文提到的用户下单到支付的平均时间间隔,使用累积型快照事实表进行统计,就能避免两个事务事实表的关联操作,从而变得十分简单高效。

  • 特点
    • 记录一个业务过程中的多个关键阶段的状态,通常涵盖整个过程的生命周期。
    • 每个阶段会有多条记录,每条记录代表一个关键状态(如订单的下单、发货、送达等)。
    • 包含多个日期键和相关维度,如开始日期、结束日期、状态等。

在这里插入图片描述

  • 适用场景

    • 需要跟踪和分析业务过程中每个阶段的进展和状态。
    • 适合于分析业务过程的整体性能和效率。
    • 对于跨部门协作和过程优化有很好的支持。
  • 设计流程:

  1. 选择业务过程:
    选择一个关键业务流程,例如电商平台的订单处理流程。

  2. 声明粒度:
    定义每行数据所表示的具体内容,选择最小的数据粒度。例如,每行数据可能表示每个订单的某个关键时间点或事件。

  3. 确认维度:
    确定与每个业务过程相关联的维度,确保包含一个日期维度用于时间分析。

  4. 确认事实:
    选择每个业务过程中需要记录和分析的度量值。例如,订单的金额、数量等。


1.2 维度表(Dimension Table)

  • 维度表描述了事实表中度量数据的上下文或背景信息,例如时间、地点、产品、客户等。
  • 维度表通常包含文本型数据,用于筛选、分组和标识事实数据。
  • 维度表的每一行对应一个唯一的维度成员,例如一个特定的时间点、地理位置或产品。

在这里插入图片描述

维度表用于描述事实表中数据的上下文或背景信息,例如时间、地理位置、产品、客户等。

  • 组织结构:维度是由一个或多个层次结构组成,用于对数据进行分类和分层。如果维度没有层次结构和级别,则称为平面维度或列表。
  • 主键:每个维度表的主键是事实表复合主键的一部分,确保了维度数据的唯一性和完整性。
  • 描述性属性:维度表包含描述性的文本型数据,帮助对事实数据进行筛选、分组和标识。

维度表设计流程:

  • 1)确定维度(表)

    在设计事实表时,已经确定了与每个事实表相关的维度,理论上每个相关维度均需对应一张维度表。

    需要注意到,可能存在多个事实表与同一个维度都相关的情况,这种情况需保证维度的唯一性,即只创建一张维度表。

    另外,如果某些维度表的维度属性很少,例如只有一个**名称,则可不创建该维度表,而把该表的维度属性直接增加到与之相关的事实表中,这个操作称为维度退化。

在这里插入图片描述

  • 2)确定主维表和相关维表

    此处的主维表和相关维表均指业务系统中与某维度相关的表。

    例如业务系统中与商品相关的表有sku_info,spu_info,base_trademark,base_category3,base_category2,base_category1等,其中sku_info就称为商品维度的主维表,其余表称为商品维度的相关维表。维度表的粒度通常与主维表相同。

  • 3)确定维度属性

    • (1)尽可能生成丰富的维度属性
      维度属性是后续做分析统计时的查询约束条件、分组字段的基本来源,是数据易用性的关键。维度属性的丰富程度直接影响到数据模型能够支持的指标的丰富程度。
    • (2)尽量不使用编码,而使用明确的文字说明,一般可以编码和文字共存。
    • (3)尽量沉淀出通用的维度属性
      有些维度属性的获取需要进行比较复杂的逻辑处理,例如需要通过多个字段拼接得到。为避免后续每次使用时的重复处理,可将这些维度属性沉淀到维度表中。

在这里插入图片描述


2. 常见的维度模型结构

2.1 星型模式(Star Schema)

  • 星型模式是最简单和最常见的维度模型结构,由一个中心的事实表和多个维度表组成,事实表与各个维度表通过外键关联。

在这里插入图片描述

  • 这种结构形成了一个星型的图形,事实表位于中心,维度表则位于周围,类似星星的形状,因此得名。

在这里插入图片描述

  • 中心事实表:星型模式的核心是一个事实表,用于存储业务事实或事件的数值型数据,如销售额、数量等。事实表通常包含一个复合主键,由与之相关的各个维度表的外键组成,确保了数据的唯一性和完整性。

  • 多个维度表:维度表用于描述事实数据的上下文或背景信息,如时间、地理位置、产品、客户等。每个维度表都有一个唯一的主键,该主键同时也是事实表复合主键的一部分。

  • 外键关联:事实表通过与维度表的外键关联,实现了事实数据与其上下文信息的结合。这种关系设计使得数据分析者能够快速、直观地理解和查询业务数据。

  • 简单直观:星型模式的结构简单明了,易于理解和实施。它提供了一种直观的数据模型,有助于用户进行复杂数据分析和决策支持。

星型模式适合那些以分析查询为主要目的的数据仓库应用,尤其是对于 OLAP(联机分析处理)工作负载而言,效果显著。

它提供了灵活性和性能优势,使得数据仓库可以快速响应用户复杂的分析需求。


2.2 雪花模式(Snowflake Schema)

在这里插入图片描述

  • 雪花模式是星型模式的扩展,维度表被进一步规范化为多个维度表,形成多层次的结构。例如,一个产品维度可能会被拆分为产品类别、产品子类别、产品等级等多个维度表,每个表都有自己的主键。

在这里插入图片描述

  • 由于维度表的规范化,雪花模式可以形成多层次的结构,维度之间可能通过外键关联,形成层级关系。这种结构有助于更精细地描述和组织数据。

在这里插入图片描述

  • 通过规范化,可以减少数据的冗余,但查询时可能需要更多的连接操作,影响查询性能。

  • 雪花模式通常适用于那些需要更细致层次结构和更复杂数据关系的数据仓库应用。它可以支持更精确的数据分析和更复杂的查询需求。

在这里插入图片描述


3. 维度建模的优点和应用场景

  • 易理解和使用:维度模型以业务过程和需求为中心组织数据,使用户能够直观地理解和操作数据。
    在这里插入图片描述

  • 性能优化:星型模式通常比较扁平化,查询性能较好,适合OLAP(联机分析处理)应用。

  • 灵活性:维度模型可以根据业务需求进行扩展和调整,支持新的分析维度和度量的添加。


4. 维度建模的步骤

  • 确定业务过程:明确需要分析和支持的业务过程和需求。
  • 识别维度:识别事实表中需要用于分析和过滤的维度,例如时间、地点、产品、客户等。

在这里插入图片描述

  • 设计事实表和维度表:根据业务需求设计事实表和相关的维度表,并确定它们之间的关系。
  • 优化模型:考虑查询性能和数据冗余的平衡,选择合适的模式(星型或雪花)进行优化。

在这里插入图片描述



本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1966682.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

ARM编程指令二

一、算术指令 1. add指令 功能: 将两个操作数相加,并将结果存储在目标寄存器中。 ADD R0, R1, R2 // R0 R1 R22. sub指令 功能: 将第二个操作数从第一个操作数中减去,并将结果存储在目标寄存器中。 SUB R0, R1, R2 // R0 R1 - R23.ADC指令- 带…

强化学习机械臂

一.前言 这里记录一下我学习强化学习的一些知识,并希望在今后可以通过仿真成功验证算法,如果时间允许的情况下希望可以结合到真实机械臂上。 二.学习过程 机械臂强化学习实战(stable baselines3panda-gym) 这里我先用anaconda创…

【原创教程】电气电工常用剥线钳和压线钳(入门篇)

今天我们来看一下电气电工经常会用到的工具,剥线钳和压线钳。 首先我们看剥线钳做什么用?主要就是剥线,让内部的铜丝裸露。我们来看一下,我们经常用到的剥线钳。 1、带刃口剥线钳 2、自动剥线钳 3、鸭嘴剥线钳 下面看压嘴剥线钳…

Nodejs的使用

1.安装nodejs服务器。 java 项目可以运行在 tomcat 服务器,开始完成前后端完全分离。前端有自己独立的工程。我们需 要把前端独立的工程运行起来。 --- 运行在 nodejs 服务器下。 理解为 tomcat 服务器 安装成功后在命令窗口查看 1.1 安装npm java 项目需要依赖…

finalshell连接kali-Linux失败问题略谈

如果你正在使用fianlshell或者xshell等终端软件远程连接Linux进行工作,但是突然有一天,你死活连不上了,报错提示如下: java.net.ConnectException: Connection refused: connect 就像这样: 哪怕是重装虚拟机&#xff0…

HardSignin _ 入土为安的第十二天

有壳 55 50 58 用010 把vmp改成upx ctrlf2,查找main函数 点第三个 Ctrlx交叉引用 把花指令改了90 一共三处 找db按c 找函数按p封装,按f5反编译函数 smc 用pythonida绕一下 from ida_bytes import * addr 0x00401890 for i in range(170):patch_byte(addr i,…

排序算法----冒泡,插入,希尔,选择排序

冒泡排序 原理 冒泡排序实际上是交换排序,将大的数据通过交换的方式排到一边,依次进行 代码实现 void Swap(int* p1, int* p2) {int temp *p1;*p1 *p2;*p2 temp; }void BullerSort(int* a, int n) {for (int end n - 1; end > 0; end--){for …

卷积神经网络理论(CNN)·基于tensorflow实现

传统神经网络的输入是一维的数据(比如28*28的图片,需要转化为一维向量)。 而卷积神经网络的输入是一个三维的(比如RGB)。 结构 卷积神经网络有以下结构: 输入层卷积层池化层全连接层 输入层 顾名思义,输入层就是输入数据(可以是图片等数…

仅缺一位作者,年内书号

《工程测量学概论》缺第三 《风景园林设计与施工技术研究》缺第二 《对外汉语教学方法与实践研究》缺第三 《基于视觉传达设计下的民间艺术发展研究》缺第三 《英语教学基础与翻译技巧》缺第三 《博物馆学体系与博物馆探究学习》缺第三 《新时期高校辅导员工作与队伍建设研究》…

迈向数智金融:机器学习金融科技新纪元的新风采

个人名片: 🐼作者简介:一名大三在校生,喜欢AI编程🎋 🐻‍❄️个人主页🥇:落798. 🐼个人WeChat:hmmwx53 🕊️系列专栏:🖼️…

怎么通过 ssh 访问远程设备

文章目录 什么是 SSH背景环境配置前置准备在 linux 系统中安装 ssh 组件 什么是 SSH ssh 全称是 Secure Shell, 有时候也被叫做 Secure Socket Shell, 这个协议使你能通过命令行的方式安全的连接到远端计算机。当连接建立就会启动一个 shell 会话,这时你就能在你的…

Kubernetes中间件监控指标解读

监控易是一款功能强大的IT监控软件,能够实时监控和分析各种IT资源和应用的状态,为企业提供全面而深入的监控服务。在Kubernetes中间件监控方面,监控易提供了详尽的监控指标,帮助用户全面了解Kubernetes集群的运行状态和性能表现。…

一键PDF翻译成中文,划重点轻松get

现在信息多得跟海一样,PDF文件里全是宝贵的资料和文章。但是,看着满屏幕的外国字,你是不是也头疼过?别发愁,今天咱们就来好好聊聊pdf翻译成中文的工具,帮你轻松搞定语言障碍,一点按钮&#xff0…

电测量数据交换DLMS∕COSEM组件第61部分:对象标识系统(OBIS)(上)

1.范围 GB/T 17215.6的本部分规定了对象标识系统(OBIS)的总体结构并将测量设备中的所有常用数据项映射到其标识代码。 OBIS为测量设备中的所有数据都提供唯一的标识符,不仅包括测量值,而且还包括仪表设备的配置或获取测量设备运行状态的抽象数据。本部分定义的ID代码用作标…

论文解析——CRNN算法

论文paper地址:An End-to-End Trainable Neural Network for Image-based Sequence Recognition and Its Application to Scene Text Recognition 本文的主要目的是识别图片中的序列文字的识别。CRNN的主要贡献在于提出了一个网络架构,这种架构具有以下…

基于飞腾平台的Kafka移植与安装

【写在前面】 飞腾开发者平台是基于飞腾自身强大的技术基础和开放能力,聚合行业内优秀资源而打造的。该平台覆盖了操作系统、算法、数据库、安全、平台工具、虚拟化、存储、网络、固件等多个前沿技术领域,包含了应用使能套件、软件仓库、软件支持、软件适…

java基础 之 集合与栈的使用(一)

文章目录 集合特点(从整体性来看)区别List接口(一)实现类:ArrayList(二)实现类:LinkedList 集合 java集合可分为Set、List、Queue和Map四种体系。其中List、Set、Queue均继承自Coll…

ADC静态误差

0 前言 图1 表示测量数据精密度高,但准确度较差;图2 表示测量数据的准确度高,但精密度差;图3 表示测量数据精密度和准确度都好,即精确度高。 1 简介 模数转换器(ADC)广泛用于各种应用中&…

Spring Cloud开发实战(一)- 搭建一个Eureka+Feign+LoadBalancer 项目

Spring Cloud开发实战(一)- 搭建一个EurekaFeignLoadBalancer 项目 文章目录 Spring Cloud开发实战(一)- 搭建一个EurekaFeignLoadBalancer 项目0.内容简介1.Eureka服务注册与发现1.1.什么是服务注册与发现1.2.Eureka注册中心1.2.…

Android 系统与SDK和JDK版本对照表

Android 系统与SDK和JDK版本对照表 传说中的兼容问题是指在高版本 SDK 平台开发的软件,可能在低版本 Android 系统中运行时出现各种问题。而低版本 SDK 开发的软件在高版本 Android 系统中运行时基本没有兼容问题的。 Android版本SDK/API版本JDK版本备注Android 14…