吴乙己的数仓指南_2维度建模核心思想

0.引言

前两章讲了很多宽泛,大而全,代码之外的东西,想必大家看的昏昏欲睡(不过大家打怪升级多了,会发现代码之外的东西往往才是决定性的东西,相信我)。

本章讲干货,讲数仓工程师设计&开发时关注的干货——维度建模,可谓数仓工程师的内功

先简单讲一下啥是维度建模,维度建模是Kimball老爷子发明的用来短平快地搭建数仓的方法论,优势在于基于需求快速落地,同时能以维度内聚业务,区分为主题便于管理(当然烟囱式开发会导致数据壁垒和逻辑争执,后面有了数据中台来解决这俩难题)。与之对应的是关系建模,由Inmon老爷子发明,相信计算机专业的朋友在大学的数据库课程中都学习过,关系建模适合对大而全稳定的业务建模(如银行),严格基于3NF使用以及维护非常方便,但基于业务变化进行迭代会相对麻烦,我没做过关系建模故此处不展开。

本章不讨论分层等等更贴代码的东西,讨论的是维度建模心法中的核心思想。

数仓工程师的精神导师,维度建模的爸爸Ralph Kimball的著作 《数据仓库工具箱》 想必大家都读过,翻来覆去就说了三样东西:维度建模“四部曲”总线矩阵维度建模高级方法。前两者是内功,后者是外功,本章着重讨论内功,外功后期会整理代表类型的技术单独成文。

1.维度建模“四部曲”

本节几乎照搬 《数据仓库工具箱》 ,大家有书可以不看我这里。

1.1选择业务过程

业务过程是由特定功能组织完成的微观活动,如下订单,开发票,保险索赔,医院挂号,等等。
业务有如下公共特征:
1.业务过程通常由行为动词表示。
2.业务过程通常由某个操作性系统(OLTP——OnLine Transaction System)支撑。
3.业务系统建立或获取关键性能度量。有时这些度量是业务过程的结果,也有可能是业务过程中的产出数值。
4.业务过程常由输入激活,产生输出度量。

1.2声明粒度

粒度传递的是与事实表度量相关的细节级别。应使用业务术语来表示粒度。
例如:
登机口每处理登机牌一次,记录一行数据。
医生每开具一张收费单,记录一行数据。
派出所每出警一次,记录一行数据。

1.3确定维度

维度要解决的问题是“业务人员如何描述来自业务过程度量事件的数据?”应使用足够健壮的维度集合来装饰事实表,这些维度承担每个度量环境中所有可能的单值描述符

1.4确定事实

通过回答“如何度量业务过程?业务过程的度量是什么?”来确定事实。
要以用户需求和数据来源的实际情况确定事实,坚决抵制仅考虑数据来源来建模数据

关键词
维度:包含与业务过程度量事件有关的文本环境,用于描述“谁/什么/哪里/何时/如何/为什么”有关的事件。
度量:描述业务过程事实的值,如多少,高度,人数,等等。
举例:穿红色衣服的小明在高考中考得666分。其中“高考”是业务过程,“红色衣服”/“小明”是维度,“666分”是度量

2.总线矩阵

计算机中的总线大家都耳熟能详,它是接口的规范,确保磁盘,光驱等设备可以正常插拔。维度建模也是如此,维度就是一条条纵向的线路,合在一起就是总线。而每个业务过程就像是一条条横向的具有不同接口的电子设备,连接总线与维度交织,相交点的组合就是数据应用

总线矩阵
以“商店库存”这个业务为例。其中含购买订单,商店库存,商店销售等业务过程(横向);含日期,产品,商店,促销,仓库等 维度(纵向) 相交的点即可作为数据应用的组成单元。


今天的文字不多,而且大家若想吸收内容怎么着也得做它一两个项目才有数,强烈建议大家读 《数据仓库工具箱》

大家英文功底ok的话也可访问Kimball老爷子的公司主页https://www.kimballgroup.com/ 学习数据仓库的知识。

KimballGroup
KimballGroup2
向Kimball老爷子致敬!

下一章讲数仓分层,敬请期待!

P.S.朋友反馈本章没有讲解星型模型/ 雪花模型,因为我认为这是外功,不属于内功AKA思想,故不讨论。很多大牛blogger的文章讲解的很清晰,一搜便知。

【版权所有,翻版必究。】

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值