数仓建模首推书籍《数据仓库工具箱:维度建模权威指南》,本篇文章参考此书而作

文章首发公众号:五分钟学大数据,公众号中发送“维度建模”即可获取此书籍第三版电子书

先来介绍下此书,此书是基于作者 60 多年的理论业务环境而总结的教训及教训,为读者提供正式的维度设计和开发技术。面向数仓和BI设计人员,书中波及到的内容十分宽泛,围绕一系列的商业场景或案例钻研进行组织。强烈建议买一本实体书钻研,重复通读全书至多三遍以上,你的技术将会有质的飞跃。

因为本文是纯理论常识,稀稀拉拉的字,很多人可能看不下去,所以我尽量用起码的字来表白,尽量将艰涩难懂的词语转化为艰深易于了解的词,将文中的重点加粗展现,内容尽量精简,以保障在不表白谬误的状况下更利于读者学习!心愿和大家能一起学习,一起提高,致力达到咱们本人的金字塔顶部

维度建模是什么

维度模型是数据仓库畛域巨匠Ralph Kimball 所提倡,以剖析决策的需要登程构建模型,构建的数据模型为剖析需要服务,因而它重点解决用户如何更疾速实现剖析需要,同时还有较好的大规模简单查问的响应性能

维度建模是 数据仓库/商业智能 我的项目胜利的要害,为什么这么说,因为不论咱们的数据量从GB到TG还是到PB,尽管数据量越来越大,然而数据展示要获得成功,就必须建设在简略性的根底之上,而维度建模就是时刻思考如何可能提供简略性,以业务为驱动,以用户了解性和查问性能为指标

维度建模:维度建模是专门利用于剖析型数据库、数据仓库、数据市集建模的办法。数据市集能够了解为一种“小型的数据仓库”
维度建模领导咱们在数据仓库中如何建表

维度建模分为两种表:事实表和维度表

  1. 事实表:必然存在的一些数据,像采集的日志文件,订单表,都能够作为事实表

特色:是一堆主键的汇合,每个主键对应维度表中的一条记录,客观存在的,依据主题确定出须要应用的数据

  1. 维度表:维度就是所剖析的数据的一个量,维度表就是以适合的角度来创立的表,剖析问题的一个角度:工夫、地区、终端、用户等角度

维度建模的三种模式

  1. 星形模式:以事实表为核心,所有的维度表间接连在事实表上,最简略最罕用的一种

  1. 雪花模式:雪花模式的维度表能够领有其余的维度表,这种表不易保护,个别不举荐应用

  1. 星座模型:基于多张事实表,而且共享维度信息,即事实表之间能够共享某些维度表

维度建模怎么建

咱们晓得事实表,维度表,星形模型,星座模型这些概念了,然而理论业务中,给了咱们一堆数据,咱们怎么拿这些数据进行数仓建设呢,数仓工具箱作者依据本身60多年的理论业务教训,给咱们总结了如下四步,请务必记住!

数仓工具箱中的维度建模四步走:

牢记以上四步,不论什么业务,就依照这个步骤来,程序不要搞乱,因为这四步是环环相扣,步步相连。上面具体拆解下每个步骤怎么做

1、抉择业务过程
维度建模是紧贴业务的,所以必须以业务为根基进行建模,那么抉择业务过程,顾名思义就是在整个业务流程中选取咱们须要建模的业务,依据经营提供的需要及日后的易扩展性等进行抉择业务。比方商城,整个商城流程分为商家端,用户端,平台端,经营需要是总订单量,订单人数,及用户的购买状况等,咱们抉择业务过程就抉择用户端的数据,商家及平台端暂不思考。业务抉择十分重要,因为前面所有的步骤都是基于此业务数据开展的。

2、申明粒度
先举个例子:对于用户来说,一个用户有一个身份证号,一个户籍地址,多个手机号,多张银行卡,那么与用户粒度雷同的粒度属性有身份证粒度,户籍地址粒度,比用户粒度更细的粒度有手机号粒度,银行卡粒度,存在一对一的关系就是雷同粒度。为什么要提雷同粒度呢,因为维度建模中要求咱们,在同一事实表中,必须具备雷同的粒度,同一事实表中不要混用多种不同的粒度,不同的粒度数据建设不同的事实表。并且从给定的业务过程获取数据时,强烈建议从关注原子粒度开始设计,也就是从最细粒度开始,因为原子粒度可能接受无奈预期的用户查问。然而上卷汇总粒度对查问性能的晋升很重要的,所以对于有明确需要的数据,咱们建设针对需要的上卷汇总粒度,对需要不明朗的数据咱们建设原子粒度。

3、确认维度
维度表是作为业务剖析的入口和描述性标识,所以也被称为数据仓库的“灵魂”。在一堆的数据中怎么确认哪些是维度属性呢,如果该列是对具体值的形容,是一个文本或常量,某一束缚和行标识的参与者,此时该属性往往是维度属性,数仓工具箱中通知咱们牢牢把握事实表的粒度,就能将所有可能存在的维度辨别开,并且要确保维度表中不能呈现反复数据,应使维度主键惟一

4、确认事实
事实表是用来度量的,基本上都以数量值示意,事实表中的每行对应一个度量,每行中的数据是一个特定级别的细节数据,称为粒度。维度建模的外围准则之一是同一事实表中的所有度量必须具备雷同的粒度。这样能确保不会呈现反复计算度量的问题。有时候往往不能确定该列数据是事实属性还是维度属性。记住最实用的事实就是数值类型和可加类事实。所以能够通过剖析该列是否是一种蕴含多个值并作为计算的参与者的度量,这种状况下该列往往是事实。

事实表品种

事实表分为以下6类:

  1. 事务事实表
  2. 周期快照事实表
  3. 累积快照事实表
  4. 无事实的事实表
  5. 汇集事实表
  6. 合并事实表

简略解释下每种表的概念:

  • 事务事实表

表中的一行对应空间或工夫上某点的度量事件。就是一行数据中必须有度量字段,什么是度量,就是指标,比如说销售金额,销售数量等这些可加的或者半可加就是度量值。另一点就是事务事实表都蕴含一个与维度表关联的外键。并且度量值必须和事务粒度保持一致。

  • 周期快照事实表

顾名思义,周期事实表就是每行都带有工夫值字段,代表周期,通常工夫值都是规范周期,如某一天,某周,某月等。粒度是周期,而不是个体的事务,也就是说一个周期快照事实表中数据能够是多个事实,然而它们都属于某个周期内。

  • 累计快照事实表

周期快照事实表是单个周期内数据,而累计快照事实表是由多个周期数据组成,每行汇总了过程开始到完结之间的度量。每行数据相当于管道或工作流,有事件的终点,过程,起点,并且每个关键步骤都蕴含日期字段。如订单数据,累计快照事实表的一行就是一个订单,当订单产生时插入一行,当订单发生变化时,这行就被批改。

  • 无事实的事实表

咱们以上探讨的事实表度量都是数字化的,当然理论利用中绝大多数都是数字化的度量,然而也可能会有大量的没有数字化的值然而还很有价值的字段,无事实的事实表就是为这种数据筹备的,利用这种事实表能够剖析产生了什么。

  • 汇集事实表

汇集,就是对原子粒度的数据进行简略的聚合操作,目标就是为了进步查问性能。如咱们需要是查问全国所有门店的总销售额,咱们原子粒度的事实表中每行是每个分店每个商品的销售额,汇集事实表就能够先聚合每个分店的总销售额,这样汇总所有门店的销售额时计算的数据量就会小很多。

  • 合并事实表

这种事实表遵循一个准则,就是雷同粒度,数据能够来自多个过程,然而只有它们属于雷同粒度,就能够合并为一个事实表,这类事实表特地适宜常常须要独特剖析的多过程度量。

维度表技术

  1. 维度表构造

维度表谨记一条准则,蕴含繁多主键列,但有时因业务简单,也可能呈现联结主键,请尽量避免,如果无奈防止,也要确保必须是繁多的,这很重要,如果维表主键不是繁多,和事实表关联时会呈现数据发散,导致最初后果可能呈现谬误。

维度表通常比拟宽,蕴含大量的低粒度的文本属性。

  1. 跨表钻取

跨表钻取意思是当每个查问的行头都蕴含雷同的一致性属性时,使不同的查问可能针对两个或更多的事实表进行查问

钻取能够扭转维的档次,变换分析的粒度。它包含上钻/下钻:

上钻(roll-up):上卷是沿着维的档次向上汇集汇总数据。例如,对产品销售数据,沿着工夫维上卷,能够求出所有产品在所有地区每月(或季度或年或全副)的销售额。

下钻(drill-down):下钻是上钻的逆操作,它是沿着维的档次向下,查看更具体的数据。

  1. 进化维度

进化维度就是将维度退回到事实表中。因为有时维度除了主键没有其余内容,尽管也是非法维度键,然而个别都会退回到事实表中,缩小关联次数,进步查问性能

  1. 多层次维度

少数维度蕴含不止一个天然档次,如日期维度能够从天的档次到周到月到年的档次。所以在有些状况下,在同一维度中存在不同的档次。

  1. 维度表空值属性

当给定维度行没有被全副填充时,或者当存在属性没有被利用到所有维度行时,将产生空值维度属性。上述两种状况,举荐采纳描述性字符串代替空值,如应用 unknown 或 not applicable 替换空值。

  1. 日历日期维度

在日期维度表中,主键的设置不要应用程序生成的id来示意,能够应用更有意义的数据表示,比方将年月日合并起来示意,即YYYYMMDD,或者更加具体的精度。

最初

获取最新文章,可关注公众号:五分钟学大数据

在公众号后盾回复 维度建模 即可获取数仓书籍电子版