ETL自学之路-02(维度建模)

发布时间:2022-09-23 18:30

一、维度建模的基本概念

1.1维度建模的定义

维度建模(dimensional modeling)是专门用于分析型数据库、数据仓库、数据集市建模的方法,数据集市可以理解为是一种小型的数据仓库。

1.2 维度表(dimension)

维度表示你要对数据进行分析时所用的一个量,比如,你要分析产品销售情况,你可以选择按照类别来进行分析,或者按照区域进行分析。这样的按照XX进行分析的就构成了一个维度。再比如“昨天下午我在星巴克话费200元喝了一杯卡布奇诺”,那么以消费为主题进行分析从这段消息中可以提取三个维度:时间维度(昨天下午)、地点维度(星巴克)、商品维度(卡布奇诺)。通常来说维度表信息比较固定,且数据量小。

1.3 事实表(fact_table)

表示对分析主题的度量。事实表包含了与各维度表相关联的外键,并调用JOIN方式与维度表关联。事实表的度量通常是数值型的,且记录数会不断增加,表规模迅速增长。比如上面消费的例子,他的消费事实表结构示例如下所示:

消费事实表:prod_id(引用商品维度表id)、timekey(引用时间维度表)、place_id(引用地点维度表)、unit(销售量)。

总的来说,在数据仓库中不需要严格按照规范化设计原则,因为数据仓库的主导功能就是面向分析,以查询为主,不涉及数据更新操作。事实表的设计是以能够正确记录历史信息为准则,维度表的设计是以能够以合适的角度来聚合主题内容为原则。

二、维度建模的三种方式

2.1 星型模型

星型模型(star schema)是最常用的维度建模方式。星型模型是以事实表为中心,所有的维度表都直接连接在事实表身上,像星星一样。

  1. 维度表只和事实表关联,维度表之间没有关联;
  2. 每个维度主键为单列,且该主键被放在事实表中,作为两边连接的外键。
  3. 以事实表为核心,维度表围绕核心呈星型分布。

2.2 雪花模型

雪花模型(snawflake schema)是对星型模式的扩展。雪花模式的维度表可以拥有其他维度表。虽然这种模型相比星型模型更规范一些,但是由于这种模型不太容易理解,维护成本比较高,而且性能方面需要关联多层维度表,性能也比星型模型要低,所以一般不是很常用。

2.3 星座模型

星座模型是星型模型延伸而来,星型模型是基于一张事实表,而星座模型是基于多张事实表的而且共享维度信息。

前面介绍的两种维度建模的方式是对应单事实表,但是在很多时候维度空间的事实表不止一个,而一个维度表也可能被多个事实表用到,在业务发展后期,绝大部分维度表建模都是采用星座模型。

三、模型命名规范

维度表命名遵循 dim_的规则,其中dimension_name用来描述维度的内容。

维度一般是指 人员(who)、时间(when)、地点(where)、事件(what)来划分。

事实表的命名遵循fact_ 的规则,其中fact_name用来描述事实表的内容。

事实表一般是以多少(how much)来划分的。

ItVuer - 免责声明 - 关于我们 - 联系我们

本网站信息来源于互联网,如有侵权请联系:561261067@qq.com

桂ICP备16001015号