Loading [MathJax]/jax/output/CommonHTML/config.js
前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >【总结】维度数据建模过程及举例

【总结】维度数据建模过程及举例

作者头像
辉哥
发布于 2022-05-13 06:23:02
发布于 2022-05-13 06:23:02
2.1K21
代码可运行
举报
文章被收录于专栏:区块链入门区块链入门
运行总次数:1
代码可运行

数据仓库2.png

1. 摘要

本文介绍数据仓库中维度数据建模的过程描述,并举一个示例以加深对相关概念的理解。

2. 内容

2.1 维度模型定义

维度模型是数据仓库领域大师Ralph Kimall所倡导,他的《数据仓库工具箱》,是数据仓库工程领域最流行的数仓建模经典。维度建模以分析决策的需求出发构建模型,构建的数据模型为分析需求服务,因此它重点解决用户如何更快速完成分析需求,同时还有较好的大规模复杂查询的响应性能。

2.2 维度建模过程

第一步:选择业务过程

1、通过对业务需求以及可用数据源的综合考虑,确定对哪种业务过程开展建模工作

2、建立的第一个维度模型应该是一个最有影响的模型——它应该对最紧迫的业务问题作出回答,并且对数据的抽取来说是最容易的。

第二步:定义粒度

注:粒度是指数据仓库的数据单位中保存数据的细化或综合程度的级别,细化程度越高,粒度就越小

1、应该先优先考虑为业务处理获取最有原子性的信息而开发维度模型。原子型数据是所收集的最详细的信息,这样的数据不能再做更进一步的细分。

2、数据仓库几乎总是要求在每个维度可能得到的最低粒度上对数据进行表示的原因,并不是因为查询想看到每个低层次的行,而是因为查询希望以很精确的方式对细节知识进行抽取。

第三步:选定维度

一个经过仔细考虑的粒度定义确定了事实表的基本维度特性。同时,经常也可能向事实表的基本粒度加入更多的维度,而这些附加的维度会在基本维度的每个组合值方面自然地取得唯一的值。如果附加的维度因为导致生成另外的事实行而违背了这个基本的粒度定义,那么必须对粒度定义进行修改以适应这个维度的情景。

第四步:确定事实

确定将哪些事实放到事实表中。粒度声明有助于稳定相关的考虑。事实必须与粒度吻合。在考虑可能存在的事实时,可能会发现仍然需要调整早期的粒度声明和维度选择

2.3 维度建模的基本要素

维度建模中有一些比较重要的概念,理解了这些概念,基本也就理解了什么是维度建模。

1. 事实表

发生在现实世界中的操作型事件,其所产生的可度量数值,存储在事实表中。从最低的粒度级别来看,事实表行对应一个度量事件,反之亦然。

额,看了这一句,其实是不太容易理解到底什么是事实表的。

比如一次购买行为我们就可以理解为是一个事实,下面我们上示例。

图中的订单表就是一个事实表,你可以理解他就是在现实中发生的一次操作型事件,我们每完成一个订单,就会在订单中增加一条记录。

我们可以回过头再看一下事实表的特征,在维度表里没有存放实际的内容,他是一堆主键的集合,这些ID分别能对应到维度表中的一条记录。

2. 维度表

每个维度表都包含单一的主键列。维度表的主键可以作为与之关联的任何事实表的外键,当然,维度表行的描述环境应与事实表行完全对应。 维度表通常比较宽,是扁平型非规范表,包含大量的低粒度的文本属性。

我们的图中的用户表、商家表、时间表这些都属于维度表,这些表都有一个唯一的主键,然后在表中存放了详细的数据信息。

2.4 维度建模过程举例

下面我们将以电商为例,详细讲一下维度建模的建模方式,并举例如果使用这个模型(这点还是很重要的)。

一、业务场景

假设我们在一家电商网站工作,比如某宝、某东。我们需要对这里业务进行建模。下面我们分析几点业务场景:

  1. 电商网站中最典型的场景就是用户的购买行为。
  2. 一次购买行为的发起需要有这几个个体的参与:购买者、商家、商品、购买时间、订单金额。
  3. 一个用户可以发起很多次购买的动作。

好,基于这几点,我们来设计我们的模型。

二、模型设计

下面就是我们设计出来的数据模型,和之前的基本一样,只不过是换成了英文,主要是为了后面写sql的时候来用。

我就不再解释每个表的作用了,现在只说一下为什么要这样设计。

首先,我们想一下,如果我们不这样设计的话,我们一般会怎么做?

如果是我,我会设计下面这张表。你信不信,我能列出来50个字段!其实我个人认为怎么设计这种表都有其合理性,我们不论对错,单说一下两者的优缺点。

先说我们的维度模型:

  1. 数据冗余小(因为很多具体的信息都存在相应的维度表中了,比如用户信息就只有一份)
  2. 结构清晰(表结构一目了然)
  3. 便于做OLAP分析(数据分析用起来会很开心)
  4. 增加使用成本,比如查询时要关联多张表
  5. 数据不一致,比如用户发起购买行为的时候的数据,和我们维度表里面存放的数据不一致

再说我们这张大款表的优缺点:

  1. 业务直观,在做业务的时候,这种表特别方便,直接能对到业务中。
  2. 使用方便,写sql的时候很方便。
  3. 数据冗余巨大,真的很大,在几亿的用户规模下,他的订单行为会很恐怖
  4. 粒度僵硬,什么都写死了,这张表的可复用性太低。

三、使用示例

数据模型的建立必须要为更好的应用来服务,下面我先举一个例子,来切实地感受一下来怎么用我们的模型。

需求:求出2016年在帝都的男性用户购买的LV品牌商品的总价格。

实现

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
  SELECT
    SUM(order.money)
  FROM
    order,
    product,
    date,
    address,
    user,
  WHERE
    date.year = '2016'
    AND user.sex = 'male'
    AND address.province = '帝都'
    AND product.name = 'LV'

四、总结

维度建模是一种十分优秀的建模方式,他有很多的优点,但是我们在实际工作中也很难完全按照它的方式来实现,都会有所取舍,比如说为了业务我们还是会需要一些宽表,有时候还会有很多的数据冗余。

3. 参考

  1. Hadoop构建数据仓库实践》
  2. 漫谈数据仓库之维度建模 https://zhuanlan.zhihu.com/p/27426819
本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2022-05-13,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
2 条评论
热度
最新
三、使用示例里,order, product, date, address, user, 这几个表都需不需写关联?
三、使用示例里,order, product, date, address, user, 这几个表都需不需写关联?
回复回复点赞举报
--我们可以回过头再看一下事实表的特征,在维度表里没有存放实际的内容,他是一堆主键的集合这里是不是写错了?是事实表里没有存放实际的内容
--我们可以回过头再看一下事实表的特征,在维度表里没有存放实际的内容,他是一堆主键的集合这里是不是写错了?是事实表里没有存放实际的内容
回复回复点赞举报
推荐阅读
数据建模入门指南:从懵懂小白到高手的第一步
在这个数据为王的时代,会点数据建模技能,绝对是提升逼格的利器。不管你是想搞定数据分析、机器学习,还是优化企业决策,数据建模都是绕不开的必修课。那么,什么是数据建模?它又该怎么学?今天,咱们就用最接地气的方式,带你入门。
Echo_Wish
2025/03/21
1670
数据建模入门指南:从懵懂小白到高手的第一步
详解维度建模
0x00 前言 前一篇已经对常用的几种数据模型做了简单的介绍,本篇主要对其中最常用的维度建模做一个深入的理解。 0x01 什么是维度建模 维度模型是数据仓库领域另一位大师 Ralph Kimball 所倡导,他的《The DataWarehouse Toolkit-The Complete Guide to Dimensona Modeling,中文名《数据仓库工具箱》,是数据仓库工程领域最流行的数仓建模经典。 按照书中所讲,维度建模并不要求维度模型必须满足第3范式。数据库中强调的 3NF 主要是为了消除冗
木东居士
2018/05/25
8.6K3
8000字,详解数据建模的方法、模型、规范和工具!
由于在变化快速的商业世界里,业务形态多种多样,为了能够更有针对性的进行数据建模,经过长时间的摸索,业界逐步形成了数据建模的四部曲:业务建模->领域建模->逻辑建模->物理建模。
肉眼品世界
2022/01/20
4.6K0
8000字,详解数据建模的方法、模型、规范和工具!
漫谈数据仓库之维度建模
数据仓库包含的内容很多,它可以包括架构、建模和方法论。对应到具体工作中的话,它可以包含下面的这些内容:
架构师修炼
2021/01/05
7720
漫谈数据仓库之维度建模
数据仓库:详解维度建模之事实表
一、事实表基础 二、事实表设计规则 三、事实表设计方法 四、有事实的事实表 五、无事实的事实表 六、聚集型事实表
五分钟学大数据
2022/12/29
3.1K0
数据仓库:详解维度建模之事实表
维度模型数据仓库(二) —— 维度模型基础
        既然维度模型是数据仓库建设中的一种数据建模方法,那不妨先看一下几种主流的数据仓库架构。
用户1148526
2022/12/02
1K0
维度模型数据仓库(二) —— 维度模型基础
维度建模和指标体系构建
01 数仓建模综述 数据建模是数据开发工作中的核心与基石,好的模型体系好处很多: 降低成本:优秀的模型设计能够提升数据复用性,减少计算/存储资源浪费 提升开发效率:优秀的模型设计能够降低数据使用门槛,减少工作量 提升质量:优秀的模型设计能够保证数据口径一致,降低bug率 数据建模的实现方式有很多,常用的比如ER模型,Data Vault模型等。目前业界使用最多的模型是Ralph Kimball 在《数据仓库工具》中提出的维度建模模型,其中典型的代表如星型模型,雪花模型。一个典型的维度建模一般需要经过如下几
腾讯大讲堂
2020/11/23
4K0
浅谈大数据建模的主要技术:维度建模
我们不管是基于 Hadoop 的数据仓库(如 Hive ),还是基于传统 MPP 架构的数据仓库(如Teradata ),抑或是基于传统 Oracle 、MySQL 、MS SQL Server 关系型数据库的数据仓库,其实都面临如下问题:
全栈程序员站长
2022/08/11
1.3K0
浅谈大数据建模的主要技术:维度建模
深入讲解四种数仓建模理论方法
数据仓库的建设的最重要的核心核心之一就是数仓模型的设计和构建,这个决定了数仓的复用和性能,本文将介绍四种建模的理论:维度建模、关系建模、Data Vault建模、Anchor模型建模,文后也介绍几种常见的数仓建模工具。
Spark学习技巧
2024/01/26
2.9K0
深入讲解四种数仓建模理论方法
数据仓库系列之维度建模
上一篇文章我已经简单介绍了数据分析中为啥要建立数据仓库,从本周开始我们开始一起学习数据仓库。学习数据仓库,你一定会了解到两个人:数据仓库之父比尔·恩门(Bill Inmon)和数据仓库权威专家Ralph Kimball。Inmon和Kimball两种DW架构支撑了数据仓库以及商业智能近二十年的发展,其中Inmon主张自上而下的架构,不同的OLTP数据集中到面向主题、集成的、不易失的和时间变化的结构中,用于以后的分析;且数据可以通过下钻到最细层,或者上卷到汇总层;数据集市应该是数据仓库的子集;每个数据集市是针对独立部门特殊设计的。而Kimball正好与Inmon相反,Kimball架构是一种自下而上的架构,它认为数据仓库是一系列数据集市的集合。企业可以通过一系列维数相同的数据集市递增地构建数据仓库,通过使用一致的维度,能够共同看到不同数据集市中的信息,这表示它们拥有公共定义的元素。
黄昏前黎明后
2019/08/26
1.4K0
数据建模1,2,3
1.何为建模? 数据几乎总是用于两种目的:操作型记录的保存和分析型决策的制定。简单来说,操作型系统保存数据,分型型系统使用数据。前者一般仅反映数据的最新状态,按单条记录事务性来处理;其优化的核心是更快地处理事务。后者往往是反映数据一段时间的状态变化,按大批量方式处理数据;其核心是高性能、多维度处理数据。通常我们将操作型系统简称为OLTP(On-Line Transaction Processing)— 联机事务处理,将分析型系统简称为OLAP(On-Line Analytical Processing)— 联机分析处理。 针对这两种不同的数据用途,如何组织数据,更好地满足数据使用需求。这里就涉及到数据建模问题。即设计一种数据组织方式(模型),来满足不同场景。在OLTP场景中,常用的是使用实体关系模型(ER)来存储,从而在事务处理中解决数据的冗余和一致性问题。在OLAP场景中,有多种建模方式有:ER模型、星型模型和多维模型。下面分别说明下:
用户5548425
2019/06/06
1.3K0
数据建模1,2,3
数仓建模——维度表详细讲解
来源:菜鸟数据之旅 本文约2100字,建议阅读5分钟 维度表是一种数据建模技术,用于存储与数据中心的各个业务领域相关的维度信息。 一、 维度表是什么 维度表是一种数据建模技术,用于存储与数据中心的各个业务领域相关的维度信息。它通常用于构建数据仓库、数据集市等决策支持系统,以便进行多维数据分析和报告。 在数据仓库中,维度表是与事实表相对应的表。维度表是维度建模的基础和灵魂。事实表紧紧围绕业务过程进行设计,事实表存储度量数据,如销售额、数量、收入等,而维度表则围绕业务过程所处的环境进行设计,维度表存储描述度
数据派THU
2023/05/11
1.3K0
数仓建模——维度表详细讲解
数据仓库常见建模方法与大数据领域建模实例综述
随着从IT时代到DT时代的跨越,数据开始出现爆发式的增长,这当中产生的价值也是不言而喻。如何将这些数据进行有序、有结构地分类组织存储,是我们所有数据从业者都要面临的一个挑战。
全栈程序员站长
2022/08/22
1.9K0
数据仓库常见建模方法与大数据领域建模实例综述
通俗易懂数仓建模—Inmon范式建模与Kimball维度建模
本文开始先简单理解两种建模的核心思想,然后根据一个具体的例子,分别使用这两种建模方式进行建模,大家便会一目了然!
五分钟学大数据
2021/04/15
2.1K0
通俗易懂数仓建模—Inmon范式建模与Kimball维度建模
基于Hadoop生态圈的数据仓库实践 —— 概述(一)
版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/wzy0623/article/details/51757011
用户1148526
2019/05/25
7570
数据仓库项目中的数据建模和ETL日志体系
数据仓库项目跨功能需求开发不够完善,导致的各种问题,就我个人经验来说,主要体现在数据建模不够标准和ETL日志体系不够完善两个方面,本文会详细介绍一下,如何从跨功能需求的角度,构建标准的数据建模和完善的ETL日志体系。
ThoughtWorks
2021/01/12
7850
数据仓库项目中的数据建模和ETL日志体系
数据仓库模型全景
与数据库的单表基于ER模型构建思路不同,其面向特定业务分析的特性,决定了它的构建需要整合多套数据输入系统,并输出多业务条线的、集成的数据服务能力,需要考虑更全面的因素,包括:
肉眼品世界
2022/06/15
1.3K0
数据仓库模型全景
数据仓库常见建模方法与建模实例演示[通俗易懂]
为什么要进行数据仓库建模?大数据的数仓建模是通过建模的方法更好的组织、存储数据,以便在 性能、成本、效率和数据质量之间找到最佳平衡点。一般主要从下面四点考虑
全栈程序员站长
2022/11/09
3.5K0
数据仓库常见建模方法与建模实例演示[通俗易懂]
再谈:数据建模之设计与开发
数据模型的定义:数据模型是抽象描述现实世界的一种工具和方法,是通过抽象的实体及实体之间联系的形式,来表示现实世界中事务的相互关系的一种映射。读起来有些拗口,可以简单理解为描述实体及关系的一个方法。
用户5548425
2020/08/04
5800
再谈:数据建模之设计与开发
数据仓库指北
原创推文链接:https://mp.weixin.qq.com/s/LiCZz1GHhH4CsBIl5VdZjA ,附完整版【数据仓库指北】原创PDF获取。
大数据阶梯之路
2022/12/17
1.4K0
数据仓库指北
相关推荐
数据建模入门指南:从懵懂小白到高手的第一步
更多 >
加入讨论
的问答专区 >
    领券
    问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
    本文部分代码块支持一键运行,欢迎体验
    本文部分代码块支持一键运行,欢迎体验