数据仓库维度建模——维度表设计

数据仓库维度建模——维度表设计,第1张

数据仓库维度建模——维度表设计

一、基本概念
1、维度
查看事实的角度称为维度
2、维度属性
维度所包含的表示维度的列的列,称为维度属性,一般是查询约束条件,分组和报表标签生成的基本来源。
3、获取维度的方式
(1)可以在报表需求中获取
(2)可以在相关的业务过程中发现和挖局
4、维度的主键
用于标识维度的唯一性,分为两种类型:
(1)代理键
不具有具体业务含义的键,一般用于处理缓慢变化维。
(2)自然键
具有业务含义的键。

二、设计方法和步骤
1、选择维度或者新建维度
在这个过程中需要保证维度的唯一性,有且只允许有一个维度定义,比如商品维度,用户维度,客户维度。
2、确定主维度
主维表一般是ods表,直接与业务系统同步。
3、确定其他相关维度
选择其他业务系统或者同一业务系统的与主维表存在关联关系的表,用于生成维度属性,比如商品与类目、spu、卖家、店铺等维度进行关联。
4、确定维度属性
(1)从主维表中选择维度属性或者生成新的维度属性。
(2)从相关维表中选择维度属性或者生成新的维度属性

三、雪花模型和星型模型
1、雪花模型
当属性层次被实例化为一系列维度,并且每个维度采用规范化设计,而不是单一的维度时,称为雪花模型。
2、星型模型
将维度属性层次合并到单个维度中的 *** 作称为反规范化,称为星型模型。
3、两者比较
雪花模型要大量的关联 *** 作,使用复杂度高,同时查询性能很差;星型模型方便、易用,易于理解且性能好,推荐使用。

四、维度变化处理
1、缓慢变化维处理
维度的属性不是静态的,是随着时间的变化而变化,但与事实表相比,维度变化相对缓慢。常见的有三种处理方式:
(1)重写维度值
不保留历史数据,始终取最新的数据
(2)插入新的维度行(最常用)
保留历史数据,维度值变化前的事实和过去的维度值关联,维度值变化后的事实和当前的维度值关联。
(3)添加维度列
保留历史数据,可以将变化前后记录的事实归一为变化前的维度或者归一为变化后的维度。
2、快照维表
基于一定的周期,比如每天,保留一份全量的维表数据。此方法不按照kimball维度建模规定使用代理键作为维表的主键,原因是分布式计算系统,不存在事务的概念,对于每个表生成稳定的全局唯一的代理键难度很大,使用代理键会大大增加ETL的复杂性,对ETL任务的开发和维护成本很高。
优点:开发和维护成本低;使用方便,理解性好。
缺点:极大的浪费存储。
一般不采用这种方式,而采用极限存储的方式。
3、极限存储
历史拉链存储,本质是利用维度模型中缓慢变化维新增行的处理方式。
实现方式:
(1)新增两个时间戳字段:start_dt、end_dt(表示生命周期结束的时间,当这条记录生命周期结束时,设为无穷大)。
(2)分区字段为时间戳字段。
缺点:不易理解,使用难度大;分区数量会随着时间推移越来越多。
可以做优化:比如做视图,分月做历史拉链表。

五、特殊维度处理
1、递归层次
经常会出现上钻和下钻的需求,大部分数据库系统不支持递归sql,所以在维度模型中,需要对层次结构进行处理。
1.1、分类(按照层级是否固定)
(1)均衡层次结构,比如类目和地区划分。
(2)非均衡层次结构
1.2、两种处理方式
(1)层次结构扁平化
将每个层级的实例保存为一条记录,并将其所属的各层级属性化,其中,对于高层级的实例,由于其无低层级类目,则低层级类目置为空值(为了避免出现问题,需要回填,将类目向下虚拟),同时加上是否叶子节点标记和层级属性。
(2)层次桥接表
2、多值维度
事实表中一条记录在某维表中有多条记录与之对应。有三种处理方式:
(1)降低事实表的粒度
(2)采用多字段
(3)桥接表
3、多值属性
维表中的某个属性字段同时有多个值。有三种处理方式:
(1)保持维度主键不变,将多值属性放在维度中一个属性字段中,比如k-v值的存放方式。
(2)保持维度主键不变,将多值属性放在维度中的多个属性字段中,比如卖家主营类目可能有多个,但业务需求是只取根据算法计算得到的TOP3。
(3)维度主键发生变化,一个纬度值存放多条记录,一个维度值存放多条记录。比如商品SKU维表,对于每个商品,有多少SKU,就有多少记录,主键是商品的ID和SKU的ID。
4、杂项维度

六、一致性维度
1、维度不一致的表现类型
(1)维度格式不一致,比如维度1的某个属性时间格式是yyyymmdd,维度2同一个维度属性的时间格式是yyyy-mm-dd。
(2)内容不一致,比如维度1有个属性,但是维度2却没有这个属性。
2、维度一致性的表现形式
(1)共享维表,构建公共维表,保证公共维度有且只有一个。
(2)一致性上卷,一个维度的维度属性是另外一个维度的维度属性的子集,且两个维度的公共维度属性结构和内容相同。
(3)交叉属性,两个维度具有部分相同的维度属性,这样可以针对相同的属性进行不同业务过程的交叉探查。

欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/zaji/5690333.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-12-17
下一篇 2022-12-17

发表评论

登录后才能评论

评论列表(0条)

保存