维度建模详解

星座模型只是星型模型的维度公用,类似这种
维度建模详解
实际开发中,针对某一主题可以有明确的星型模型,星座模型啥的。但是众多主题间也存在维度公用的情况,这样交织在一起形成一张大网,很难说是啥模型吧。

1 维度设计

1.1 代理键

维度表主键,关联事实表
维度建模详解
解决办法:自创一个自增的id,取代source+id这种判断方法
维度建模详解
所以有了代理键这个东西:
维度建模详解

实现方法:前一天gid的max+新增数据的行号,就是增量的gid了。
维度建模详解

1.2 稳定维度

维度建模详解

1.3 缓慢渐变维 => 拉链表

维度建模详解
这样这个id就不唯一了,跟事实表关联的话就要再弄一个代理键才行
维度建模详解
这样按部门统计有两个,按客户统计有一个就解决问题了,没有代理键的话,就乱了。
维度建模详解
mysql的业务数据=>事实表的时候,就要把代理键给弄进去
维度建模详解
具体操作方法:
不管全量增量,先把今天发生的事情选出来,再去关联。
第一种是给普通数据库用的,hive不能用非等值连接,就只能先join再where了
维度建模详解
但是这样很麻烦,一般用的不多,有时候可以用全量快照。
维度建模详解

1.4 维度表的拆分、合并

横向拆分:销售员工、技术员工等
纵向拆分:不同员工关注不同的字段
维度建模详解
弄一张大宽表,没有对应的属性字段就空着,谁要啥信息就从里面弄一张子表用,
没啥特殊情况就用这个就行,空间换时间。
维度建模详解
也可以弄一个基础信息表,不同的表在这个基础上加上自己想要的相关属性字段

2 事实表设计

2.1 明细事实表

维度建模详解
降维就是把外面关联的维度信息弄进事实表,统计的时候减少关联操作用的
维度建模详解
有时候事实表里面没有度量,比如这个审核表
维度建模详解
多个动作的事实表啥设计?
多事实表
单事实表,不断更新
维度建模详解

2.1.2 案例:

维度建模详解

2.2 聚合事实表