深入解析数仓维度建模中的维度

大数据 数据分析
对于桥接维度可能就更加好理解了,就是两个维度表之间通过第三张维度表进行关联,其中存储另外两个维度表的关系。如图9-6所示,维度表A与维度表B之间某个字段的属性存在多对多关系,基于这种多对多关系设计维度表C,用来存储这两个属性的关系。

如果你是刚接触维度建模,可能对于维度的印象是不变化的或者变化缓慢,且具有相同属性的集合体,例如日期维。但是在真实的应用场景中维度可能有十几种之多,例如从维度使用的特点来看可以分为缓慢变化维度、角色维度、微型维度、缩小维度、杂项维度、支架维度等、桥接维度;从维度的处理方式可以分为快照维度表、拉链维度表等;从维度的数据特点可以分为递归层次、多值属性、多值维度等。这些维度的类型以及方法可以提供相应的工具帮助处理真实的业务场景中。利用这些维度可以更好地平衡模型设计以及业务需求,同时具备一定的可拓展性以及可维护性等。

角色维

如果将维度想象成一把直尺,直尺上不同的刻度代表一个维度表上的不同的列。那么在几何课上将直尺用来测量距离,在阅读时用直尺用作书签,夹在书中,这个时候直尺在不同的场景下有着不同的作用,这就是角色维的概念。即相同的维度表在不同的模型中起着不同的作用,一般可以用视图实现。

微小维

如果直尺很长,但是每次测量都只用到前面的部分,那么就将直尺进行一定程度的裁剪,将用的最多的部分独立出来,方便使用,这就是微小维的概念,即将维度的子集单独出来进行使用。与微小维所类似的的是微型维的概念。微型维并不是以子集拆分而是以变化程度进行拆分的,即将维度中变化比较频繁的维度单独拆分出来进行管理。因为维度表往往都是宽表,单独出来的微型维度可以防止维度表的频繁更新导致锁,进而影响使用。微小维与微型维示意图如图1所示。

图片图片

▲图1 微小维与微型维示意图

支架维度

支架维度与桥接维度都可以看成维度的一种补充形式,前者是对于维度属性的额外补充;后者是对于维度表的一种桥接关系,关联另外的维度表。支架维度字如其名,是对于维度中属性信息的一种补充,其主要是维度表中对于另外维度的引用关系。例如商品中有出厂日期属性,但是日期属性是属于日期维度的信息,如图2所示。

▲图2 支架维度示意图▲图2 支架维度示意图

支架维度本质上是不同维度表的关联,但是在维度建模中维度表之间的关联是应该通过事实表进行的。

桥接维度

对于桥接维度可能就更加好理解了,就是两个维度表之间通过第三张维度表进行关联,其中存储另外两个维度表的关系。如图9-6所示,维度表A与维度表B之间某个字段的属性存在多对多关系,基于这种多对多关系设计维度表C,用来存储这两个属性的关系。例如代理商与客户之间,一个代理商可以代理多个客户,同时一个客户也可以隶属于多个代理商,那么维度表C则就是代理商与客户的映射关系。当然依然还是按照维度建模的理论,维度之间的关系应该通过事实表去体现,如果你清楚这样做带来的好处以及坏处,那么依然可以采用这种方式去构建你的维度。桥接维如图9-5所示。

图片图片

▲图3 桥接维示意图

这样通过支架维度、桥接维度我们可以解决维度中出现多值、多属性的问题。然而对于某些零散的维度,每个维度属性值都比较少,例如不同渠道的付款的方式:渠道粗略的看只有线上以及线下;付款方式的只有现金、信用卡、网络支付。将这2个属性进行笛卡尔组合之后,过滤掉不合理的场景,就完成了简单的杂项维的构建,如表1所示。

表1 杂项维度

代理键

渠道

付款方式

1

线上

网络支付

2

线下

现金

3

线下

信用卡

此外对于很多维度是有层级结构的,例如省份、城市或者母公司、子公司等。这种层次结构的维度对于应用使用并不友好,故往往采用扁平化的方式进行处理方便应用使用。但是这种处理需要根据具体的应用特点,例如对于省份城市可能直接进行平铺展示,而对于某些场景会处理上一级公司或者下一级公司进行展示,如表2所示。

表2 平铺处理层次维度

代理键

国家

省份

城市

1

中国

江苏

苏州

开发区

2

中国

上海

上海

闵行区

当然也有利用上下级别引用来进行展示的维度信息,如表3所示。

表3 利用上下级别引用处理的层次维度

代理键

代理商

下一级代理商

上一级代理商

1

A

C

B

2

B

E

D

说到这里一些常见的维度处理方式基本上就告一段落了,但是在维度的世界中,维度并不是一成不变的,恰恰相反,很多维度会随着时间变化而进行缓慢的变化,例如用户年龄每一年都要变化。同时一些业务的变化必然也会导致维度发生变化,例如公司部门或者产品属性的调整都会导致此类的场景,因为这就引出来维度中非常重要的概念,缓慢变化维度。

那么关于缓慢变化维度在《企业级数据架构》一书中寻找吧。

关于作者:

李杨,资深数据架构师,在数据相关领域有10年以上工作经验。头部保险资管公司科技平台交易系统团队开发组负责人,负责多个应用以及数据平台的建设、优化以及迁移工作。曾担任某数据公司技术合伙人,负责多个金融机构的数据仓库或数据平台相关的工作。《企业级数据架构:核心要素、架构模型、数据管理与平台搭建》作者。

本文摘编于《企业级数据架构:核心要素、架构模型、数据管理与平台搭建》(书号:9787111746829),经出版方授权发布,转载请标明文章出处。

责任编辑:武晓燕 来源: 数仓宝贝库
相关推荐

2021-08-11 07:53:22

数仓维度建模

2023-11-23 16:59:37

数据仓库建模

2021-12-02 08:41:30

数仓建模设计

2023-11-15 17:23:30

测试软件开发

2022-03-01 17:16:16

数仓建模ID Mapping

2017-10-25 14:15:55

大数据Hadoop维度建模

2024-08-13 08:14:55

2023-11-15 13:36:00

数仓建设数据中台

2017-10-26 09:31:14

Hadoop维度建模Kimball

2011-04-19 10:53:05

SSAS

2024-03-14 09:07:05

刷数任务维度后端

2023-08-15 08:12:12

数仓建模数仓建设

2011-08-15 10:51:25

SSAS父子维度

2016-11-09 16:44:58

云计算

2012-11-12 13:40:48

桌面虚拟化

2023-11-29 10:11:52

2013-01-28 14:59:27

2016-10-11 13:53:21

亚信

2021-08-10 18:23:38

架构Flink双维度

2014-10-18 13:53:26

点赞
收藏

51CTO技术栈公众号