数据仓库系列(二)哲学建模的艺术:如何完成数仓的维度建模设计??--做好宏观角度考虑维度一致性
写在前面: 我是
「nicedays」
,一枚喜爱做特效,听音乐,分享技术的大数据开发猿
。这名字是来自world order乐队的一首HAVE A NICE DAY
。如今,走到现在很多坎坷和不顺,如今终于明白nice day是需要自己赋予的。
白驹过隙,时光荏苒,珍惜当下~~
写博客一方面是对自己学习的一点点总结及记录
,另一方面则是希望能够帮助更多对大数据感兴趣的朋友。如果你也对大数据与机器学习
感兴趣,可以关注我的动态https://blog.csdn.net/qq_35050438
,让我们一起挖掘数据与人工智能的价值~
阿里大数据之路笔记
文章目录
- 数据仓库--维度建模中的维度设计:
- 一:什么是维度?
- 刚刚入职如何获取维度与维度属性?
- 二:如何去凭空设计维度?
- 第一步:选择维度
- 第二步:确定主维表
- 第三步:确定相关维表
- 第四步:确定维度属性
- 数值型维度属性与事实的区别:
- 尽量沉淀通用的维度属性:
- 三:如何判断:是维度?还是维度属性?
- 当维度属性作为维度:
- 当维度属性合并到单个维度:
- 星型模型:
- 星型模型特点
- 雪花模型:
- 雪花模型特点
- 四:一致性维度和交叉探查:
- 哪些情况可以称为维度一致性?
数据仓库–维度建模中的维度设计:
一:什么是维度?
维度是描述事实的一种角度
在维度建模中我们将度量作为事实,将环境描述为维度。
刚刚入职如何获取维度与维度属性?
通常我们再未预先设计的情况下,可以在报表中获取,也可以在业务人员交谈中获取,往往语句中的group by的查询中,会得知用户想要观察的维度。
二:如何去凭空设计维度?
维度设计的过程就是确定维度属性的过程
数据仓库能力与维度属性的质量与深度成正比
第一步:选择维度
其实我之前一直觉着应该先确定事实,再确定维度,但是工作中,往往客户给你的话术里,最先能确定的都是维度属性,如:我想从月份和产品中查看销售情况。
- 保证维度的唯一性
第二步:确定主维表
一个维度往往里面会有多表来表示,这就牵扯到星型与雪花模型
确定的主维表一般是ODS表,直接与业务系统同步:
例如:淘宝商品维度对应商品表就是主维表。
第三步:确定相关维表
主维表也会因为不用业务之间直接或间接有相关关联,所以确定主维表之后仍需要哪些是主维表的相关为表。
- 例如:商品表与店铺表类目表卖家表等等表或者也有可能是其他维度的主维表存在关联。
第四步:确定维度属性
维度属性需要自己通过经验判断,如商品的属性商品标题,商品内容,商品来源等等。
- 从主维表中选择维度属性或生成新的维度属性
- 从相关维表中选择维度属性或生成新的维度属性。
数值型维度属性与事实的区别:
- 如果用于查询的约束条件或分组统计,那它就作为维度属性。
- 如果用于参与度量的计算,那它就作为事实。
最典型的商品价格:
如果我们统计的是商品价格区间的商品数量–作为维度属性
如果我们统计的是商品的平均价格–作为事实
tips:离散的作为维度属性可能性较大,连续的作为事实度量可能性较大
尽量沉淀通用的维度属性:
例如商品在线是维度属性,但是它是无法像价格一样直接获取的维度属性,可能在web开发人员那边的逻辑往往是需要通过复杂的判断才能得出商品是否存在,例如,要通过商品状态和上架时间等来判断,此时应该封装逻辑,只暴露出商品在线这个通用维度属性。
三:如何判断:是维度?还是维度属性?
我们举个简单的例子:
我们从宏观的概念将商品表作为维度,
与商品相对应得行业,类别,品牌 这些名词既可以作为与商品平等得一种维度,也可以作为商品得子类–一种维度属性,
其实维表设计得精髓得就在于此:这里得可控范围很大,完全取决于你对业务得理解是否深刻,一整个架构,上下游得需求是否了解,你对开发,运维等等因为你的不同建表方式产生不同具体实操得优劣是否清楚
当维度属性作为维度:
我们称这种建表方式是规范化建表,可以避免数据冗余,让人理得清逻辑,这种建模方式称为雪花模型建模。
唯一的对于OLAP的好处来看:
- 逻辑清晰,节省一部分存储
当维度属性合并到单个维度:
我们称这种建表方式是反规范化建表,对于大数据量得查询,多表关联得操作使查询性能很低,反规范化简化查询优化速度,这种建模方式称为星型模型建模。
- 简化查询性能,复杂度降低,信息不丢失
目前对于OLAP系统来说,存储成本非常低,处于易用性和性能的考虑,通常采用星型建模的方式。下面简单介绍一下两种建模
星型模型:
星型模型特点
由事实表和维度表组成
一个星型模式中可以有一个或多个事实表,每个事实表引用任意数量的维度表
星型模式将业务流程分为事实和维度
- 事实包含业务的度量,是定量的数据
- 如销售价格、销售数量、距离、速度、重量等是事实
- 维度是对事实数据属性的描述
- 如日期、产品、客户、地理位置等是维度
- 事实包含业务的度量,是定量的数据
雪花模型:
雪花模型特点
- 一种多维模型中表的逻辑布局
- 由事实表和维度表所组成
- 将星型模式中的维度表进行规范化处理
- 把低基数的属性从维度表中移除并形成单独的表
- 一个维度被规范化成多个关联的表
四:一致性维度和交叉探查:
不同数据域中会可能会有相同的维度,我们对不同数据域的维度合并探查(交叉探查),由于存在重复相同的维度,但维度属性值或维度属性不同,会导致交叉探查结果错误,我们要保证维度在不同域的一致性
哪些情况可以称为维度一致性?
共享维表--两个域里有一模一样的维表
公共维度建立后共享,在数据仓库中有且只有一个
一致性上卷--两个域的两个维表是包含关系
当一个维度的维度属性是另一个维度的维度属性的子集,且两个维度的公共维度属性结构和内容相同
例如类目维度属性是商品维度的维度属性的子集(商品里记录了类目维度属性),且不仅这个子集的维度属性结构与值也都相同,维度表现为一致性
交叉属性--两个域的两个维表有部分相同的维度属性
两个维度有部分相同的维度属性
例如商品维度有类目维度属性,卖家维度也有一个主营类目维度属性,具有部分相同。
由于不同数据域有可能是属于不同业务,不同的开发团队去开发,我们要明确构建企业范围内的维度一致性和事实来构建总线架构。采用迭代式的构建过程。
数据仓库系列(二)哲学建模的艺术:如何完成数仓的维度建模设计??--做好宏观角度考虑维度一致性相关推荐
- 数据仓库系列文章一:浅谈数仓设计
数仓设计指对数据仓库的各项组成进行规划,在正式建设数仓之前形成指导性建设方案. 数仓设计主要分为两部分:数据仓库同操作型业务系统的数据接口设计和数仓自身建设设计. 本文从多个方面探讨数仓的设计要点,给 ...
- 聊聊数据仓库中维度表设计的二三事
前言 大家好,我是云祁!今天和大家聊聊数据仓库中维度表设计的那些事. 维度表是维度建模的灵魂所在,在维度表设计中碰到的问题(比如维度变化.维度层次.维度一致性.维度整合和拆分等)都会直接关系到维度建模 ...
- 数据仓库系列之维度建模
上一篇文章我已经简单介绍了数据分析中为啥要建立数据仓库,从本周开始我们开始一起学习数据仓库.学习数据仓库,你一定会了解到两个人:数据仓库之父比尔·恩门(Bill Inmon)和数据仓库权威专家Ralp ...
- 数据仓库(二)之维度建模篇
概述 维度建模是一种将数据结构化的逻辑设计方法,它将客观世界划分为度量和上下文.度量是常常是以数值形式出现,事实周围有上下文包围着,这种上下文被直观地分成独立的逻辑块,称之为维度.它与实体-关系建模有 ...
- 数据仓库系列(一)什么是维度建模以及维度建模的基本要素
文章目录 一.前言 二.什么是维度建模 三.维度建模的基本要素 3.1 事实表 3.2 维度表 一.前言 学习数据仓库,你一定会了解到两个人:数据仓库之父比尔·恩门(Bill Inmon)和数据仓库权 ...
- 数据仓库系列——3.维度建模概述及案例
概述 数据仓库包含的内容很多,它可以包括架构.建模和方法论.对应到具体工作中的话,它可以包含下面的这些内容: 以Hadoop.Spark.Hive等组建为中心的数据架构体系. 各种数据建模方法,如维度 ...
- 数据仓库系列2-数据仓库建模介绍
文章目录 一.建模理论 1.1 ER实体模型 1.2 维度建模 1.2.1 事实表 1.2.2 维度表 1.3 Data Vault模型 1.4 Anchor 二. 四种基本建模方法对比 三. 维度建 ...
- 数据仓库建模方法/范式建模法/维度建模法/事实表/维度表/优缺点/建模流程/概念建模/逻辑建模/物理建模
常见的有 范式建模法.维度建模法.实体建模法等,每种方法从本质上将是从不同的角度看待业务中的问题,不管是从技术层面还是从业务层面,都代表了哲学上的一种世界观. 1 范式建模法(Third Normal ...
- 漫谈数据仓库之维度建模
2019独角兽企业重金招聘Python工程师标准>>> 0x00 前言 下面的内容,是笔者在学习和工作中的一些总结,其中概念性的内容大多来自书中,实践性的内容大多来自自己的工作和个人 ...
最新文章
- PowerDesigner连接SqlServer数据库导出表结构
- smartform 打印预览时转PDF查看
- 成员变量 局部变量 类变量
- 缓存一致性协议MESI
- No architectures to compile for (ONLY_ACTIVE_ARCH=YES, active arch=x86_64, VALID_ARCHS=i386).
- mysql 集群 qps_MySQL Cluster:如何通过扩展为MySQL带来2亿QPS
- 一、Java 面向对象高级——Object类、常用API
- rgb 灰色_金属+RGB+无线,我要买爆这款海盗船VIRTUOSO鉴赏家游戏耳机
- 特斯拉=车祸多?马斯克回击
- 数字语音识别 - 源码下载|数值算法/人工智能|matlab例程|源代码 - 源码中国
- 09-部署配置kubedns插件
- C#中用ToString方法格式化时间
- cadence入门学习
- 【工具】adb下载安装及基本操作
- vue如何debugger
- 是一套基于PHP,zhw_cms 中和网企业建站系统这是一套基于PHP的快速 ,主要适用于中小 建立 WEB(ASP,PHP,...) 267万源代码下载- www.pudn.com...
- 微信支付--网页版-V3-(3)
- 开关配置springboot定时任务
- Java后端对接微信支付(微信小程序、APP、PC端扫码)非常全,包含查单、退款
- 使用Origin绘制边际分布曲线(Marginal distributions plots)的思路和方法