数仓建模理论 之 维度建模

说起维度建模,你不得不知道以下几个概念:事实表、维度表、星型模型、雪花模型、星座模型

==================================================================

维度建模

Ralph Kimball推崇数据集市的集合为数据仓库,同时也提出了对数据集市的维度建模,将数据仓库中的表划分为事实表、维度表两种类型。

1,事实表

在ER模型中抽象出了有实体、关系、属性三种类别,在现实世界中,每一个操作型事件,基本都是发生在实体之间的,伴随着这种操作事件的发生,会产生可度量的值,而这个过程就产生了一个事实表,存储了每一个可度量的事件。

电商场景案例:

一次购买事件,涉及主体包括客户、商品、商家,

产生的可度量值 包括 商品数量、金额、件数等。

2,维度表

维度,顾名思义,看待事物的角度。比如从颜色、尺寸的角度来比较手机的外观,从cpu、内存等较比比较手机性能。

维度表一般为单一主键,在ER模型中,实体为客观存在的事物,会带有自己的描述性属性,属性一般为文本性、描述性的,这些描述被称为维度。

比如商品,单一主键:商品ID,属性包括产地、颜色、材质、尺寸、单价等,但并非属性一定是文本,比如单价、尺寸,均为数值型描述性的。

日常主要的维度抽象包括:商品维度表,时间维度表、地理区域维度表等。

区域维度表:

区域维度表:在金融行业,大部分项目都是用这个维度方案。

对于大数据的项目,你可以根据实际情况,决定用哪种维度建模方法。

3,星型模型

星型模型:一般是事实表和N个维度表直接关联

你可以用星型模型(如下图)

比如下图:

4,雪花模型

雪花模型一般是事实表存在和维度表间接关联:需要维度表再次关联一张维度表

你可以用雪花模型(如下图):

但是如果你非得要用星型模型,也可以多张维度表进行关联,形成一张维度表,这样子就可以把雪花模型变为星型模型(如下图):

5,星座模型

星座模型一般是多个事实表共用N张维度表。

你可以用星座模型(如下图):

6,雪花模型与星型模型对比:

 6.1,建模方式不同

(如下图):

所以由上可以看出:

星型模型和雪花模型主要区别就是对维度表的拆分,对于雪花模型,维度表的涉及更加规范,一般符合3NF;

而星型模型,一般采用降维的操作,利用冗余来避免模型过于复杂,提高易用性和分析效率

6.2,冗余:

雪花模型符合业务逻辑设计,采用3NF设计,有效降低数据冗余;

星型模型的维度表设计不符合3NF,反规范化,维度表之间不会直接相关,牺 牲部分存储空间

6.3,性能:

雪花模型由于存在维度间的关联,采用3NF降低冗余,通常在使用过程中,需要连接更多的维度表,导致性能偏低;

星型模型反三范式,采用降 维的操作将维度整合,以存储空间为代价有效降低维度表连接数,性能较雪 花模型高

6.4,ETL:

雪花模型符合业务ER模型设计原则,在ETL过程中相对简单,但是由于附属模型的限制,ETL任务并行化较低;

星型模型在设计维度表时反范式设 计,所以在ETL过程中整合业务数据到维度表有一定难度,但由于避免附属维 度,可并行化处理

7,维度建模-业务案例:

某电商平台,经常需要对订单进行分析,以某宝的购物订单为例,以维度建模的方式设计该模型。

涉及到事实表为订单表、订单明细表,维度包括商品维度、用户维度、商家维度、区域维度、时间维度。

商品维度:商品ID、商品名称、商品种类、单价、产地等。

用户维度:用户ID、姓名、性别、年龄、常住地、职业、学历等。

时间维度:日期ID、日期、周几、上/中/下旬、是否周末、是否假期等优惠券:券ID、券类别、优惠金额。

订单中包含的度量:商品件数、总金额、总减免;

描述性属性:下单时间、结算时间、订单状态等。

订单明细包含度量:商品ID、件数、单价、减免金额;

描述性属性:入购物车时间、状态。

建模图形如下:

上面的案例,对于商品再拆分出厂家、品类;

用户的常住地再拆分出区域维度,改造为雪花模型。

好了,关于维度建模,就分享到这里,你可以有一个比较清晰的认识。天天开心,也欢迎各位小伙伴一键三连。

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

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

相关文章

为什么状态机最好要采用独热码

在状态机的编码方式中,我们常用到三种编码方式,分别是二进制编码、格雷码、独热码。 二进制编码:也称连续编码,属于压缩编码方式,可以使用较少的触发器对应更多的状态; 格雷码:属于压缩编码方…

uniapp微信小程序使用vscode代替HBuilderX开发uniapp微信小程序并且vscode改动代码微信开发者工具能实时更新

前言 最近公司开发新的小程序项目,经调研综合所有人员考虑,用uni-app Vue3tsvite技术栈开发;而官方推荐使用HBuilderX开发,而考虑到目前公司所有前端人员对VsCode更熟悉,故此总结了一下uniapp项目使用vscode代替HBuild…

什么是元宇宙?

元宇宙(Metaverse)是一个由虚拟现实(VR)、增强现实(AR)、区块链、人工智能(AI)等多种先进技术融合构建的数字化虚拟世界。这个世界不仅限于一个简单的虚拟环境,而是一个能…

Flink ValueStateDescriptor使用实例

在Apache Flink中,ValueStateDescriptor 是用于定义状态的一种数据结构,它允许你为每个键(key)存储一个值(value)。状态是 Flink 流处理模型的核心概念之一,它允许你在任务失败和恢复时保持数据…

网站开发初学者指南:2024年最新解读

在信息交流迅速的时代,网页承载着大量的信息,无论你知道还是不知道,所以你知道什么是网站开发吗?学习网站开发需要什么基本技能?本文将从网站开发阶段、网站开发技能、网站开发类型等角度进行分析,帮助您更…

40-2 了解与安装堡垒机

堡垒机 一、堡垒机与 JumpServer 1. 堡垒机 定义: 堡垒机(Bastion Host)是一种网络安全设备,用于保障网络和数据不受外部和内部用户的入侵和破坏。它通过各种技术手段监控和记录运维人员对网络内各种设备的操作行为,以便集中报警、及时处理和审计定责。功能: 权限控制:…

Java 自动生成数据库设计文档

背景&#xff1a;有时候急需要数据库设计文档&#xff0c;手写太麻烦&#xff0c;这里介绍一款开源组件&#xff0c;可以自动根据数据库连接生成数据库设计文档 废话不多说&#xff0c;直接上代码 导入maven包 <dependency><groupId>org.freemarker</groupId>…

Linux服务器的资源分配和使用情况分析相关指令

服务器资源分配情况 CPU资源 CPU型号: cat /proc/cpuinfo | grep "model name" | cut -f2 -d: | uniq -c输出示例&#xff1a;1 Intel(R) Xeon(R) CPU E5-2697 v4 2.30GHz 物理CPU核心数: cat /proc/cpuinfo | grep "cpu cores" | uniq输出示例&#xff…

数学建模(科普)

数学建模&#xff0c;就是根据实际问题来建立数学模型&#xff0c;对数学模型来进行求解&#xff0c;然后根据结果去解决实际问题。 当需要从定量的角度分析和研究一个实际问题时&#xff0c;人们就要在深入调查研究、了解对象信息、作出简化假设、分析内在规律等工作的基础上…

数据分析案例-印度美食数据可视化分析

&#x1f935;‍♂️ 个人主页&#xff1a;艾派森的个人主页 ✍&#x1f3fb;作者简介&#xff1a;Python学习者 &#x1f40b; 希望大家多多支持&#xff0c;我们一起进步&#xff01;&#x1f604; 如果文章对你有帮助的话&#xff0c; 欢迎评论 &#x1f4ac;点赞&#x1f4…

“安”网守护,“乐享”服务——革新教育行业运维与安全体验,锐捷发布两大创新方案

5月11日,锐捷网络举办以“’安‘网联动, ’乐享‘运维”为主题的线上发布会,正式发布了锐捷乐享教育订阅服务方案,以及以新一代智能安全网关为核心的安全防护解决方案。 锐捷网络教育系统部总经理马雪峰为发布会致开场辞,他指出,在数字化浪潮席卷全球的今天,教育行业正进来前所…

未来已来:Spring Cloud引领微服务新纪元

文章目录 1. 引言1.1 微服务架构的兴起与挑战1.2 引入Spring Cloud作为微服务解决方案的重要性 2. 背景介绍2.1 微服务架构概述2.2 Spring Cloud的定位2.3 Spring Cloud特性概览 3. Spring Cloud核心组件3.1 Eureka - 服务发现3.2 Hystrix - 断路器3.3 Ribbon - 客户端负载均衡…

Vue框架—快速入门

目录 &#x1f516; 认识VUE &#x1f516; 第一个Vue程序 &#x1f516; Vue指令 &#x1f3f7;️v-text &#x1f3f7;️v-html &#x1f3f7;️v-model &#x1f3f7;️v-bind &#x1f3f7;️v-on &#x1f3f7;️v-if / v-show &#x1f516; 认识VUE ▐ 在学习…

食品安全管理员有什么样的发展前景

在高速发展的食品工业中居安思危&#xff0c;着眼于国内、国际食品贸易前景&#xff0c;建立一个有效的功能健全的食品安全控制体系&#xff0c;从本质上解决危及食品安全的自然因素、人为因素、社会及技术因素&#xff0c;是从事食品安全管理工作职业人的天职。 食品的安全性关…

pytorch-1-4 张量的基础知识和运算

Lesson 1. 张量(Tensor)的创建和常用方法 首次使用,先导入PyTorch包 import torch查看版本号 torch.version一、张量(Tensor)的基本创建及其类型 1.张量(Tensor)函数创建方法 张量的最基本创建方法和NumPy中创建Array的格式一致,都是创建函数(序列)的格式:张量创建函…

Spring Security实现用户认证一:简单示例

Spring Security实现用户认证一&#xff1a;简单示例 1 原理1.1 用户认证怎么进行和保存的&#xff1f;认证流程SecurityContext保存 2 创建简单的登录认证示例2.1 pom.xml依赖添加2.2 application.yaml配置2.3 创建WebSecurityConfig配置类2.4 测试 1 原理 Spring Security是…

【AI绘画】Stable diffusion初级教程08——提示词(prompt)该如何写

今天是一篇干货&#xff0c;干的喝水的那种…… 写之前呢&#xff0c;先给大家打个比方&#xff1a;现在刚入门学习SD的相当于刚上学的小学生&#xff0c;提示词就相当于作文&#xff0c;还是英语作文&#xff0c;如果你总是抄抄抄&#xff0c;不知道作文的要点&#xff0c;语法…

全球知名哲学家思想家颜廷利:将人生黑暗视为一种机遇

在时间的长河中&#xff0c;我们短暂的人生不过是眨眼间的光景。然而&#xff0c;正是这短暂的旅程给予了我们无限的可能性和转变的契机。我们应该勇敢地面对生活中的暗夜&#xff0c;将其视作成长的土壤&#xff0c;让自我在其中焕发出独特的光辉。 当我们在生命的历程中暂停脚…

React 状态管理库深度对比:在做技术选型的时候如何选择合适的状态库,nolan出品

掘金链接&#xff1a;https://juejin.cn/post/7368288987642232872 1,简介 在状态共享这方面&#xff0c;不像 Vuex&#xff0c;React 的官方并没有强力推荐某种封装方案&#xff0c;所以 React 的状态管理工具五花八门&#xff0c;百花齐放&#xff0c; react-redux、dva、C…

【Python】语句与众所周知【自我维护版】

各位大佬好 &#xff0c;这里是阿川的博客 &#xff0c; 祝您变得更强 个人主页&#xff1a;在线OJ的阿川 大佬的支持和鼓励&#xff0c;将是我成长路上最大的动力 阿川水平有限&#xff0c;如有错误&#xff0c;欢迎大佬指正 本篇博客是在之前的基础上进行的维护 目录 条…