Hive维度表设计之--缓慢变化维、维度层次、维度一致性

维度表设计

维度表在维度建模中相当重要,在维度表设计中的一些问题直接关系到维度建模的好坏。

1、维度变化

维度表通常来自于业务系统,比如商品维度可能来自超时pos系统的商品表,但是商品会变化的,比如类目,标签价格,描述等,这些变化可能是之前错误需要订正,也可能是本身业务的变化。这种缓慢变化的维度,称为缓慢变化维度,那么源头数据的变化在维度表中如何表示呢 ??

1.1、重写纬度值

新维度值直接覆盖就纬度值,适用于不需要保留历史维度变化的情况,如生日订正。

Hive维度表设计之--缓慢变化维、维度层次、维度一致性_第1张图片

1.2、插入新的行

可以保存维度变化情况,属性改变前的事实表行和旧维度表关联,改变后的事实表行和新的维度表关联。会出现比如一个会员在维度表中对应多行记录的情况,逻辑复杂了。

Hive维度表设计之--缓慢变化维、维度层次、维度一致性_第2张图片

1.3、插入新的列

需求是希望能够用变化前的属性值,又能用变化后的属性值分析变化前后的属性所有事实。例如使用pre_region表示之前所属大区,curr_region表示当前大区,

Hive维度表设计之--缓慢变化维、维度层次、维度一致性_第3张图片

 

2、维度层次

维度层次是维度表之间的丛书关系,比如商品的类目 一级 二级 三级...,品牌和产品的层次,男士、女士、儿童等等。。。子品牌又有不同的子产品,维度建模如何处理呢?

第一种:所有维度层次结构扁平化,即比如商品类目1-3用三个字段表示,其他处理类似。

星型架构,牺牲部分存储,用户便捷。

第二种:新建类目维度表,维度表中维护父子关系,

雪花架构。

维度层次一般和钻取联系到一起,什么是钻取?

即是对信息的持续挖掘,"刨根问底",找到根据。比如对年度销售报表进行"刨根问底",年度销售总额增长20%,从时间上是哪个季度增长最高呢?向下分析季度增长率,或者月度、天的增长率,或者哪个品牌,哪个类目增长导致了年度销售总额的20%增长率。上述称为向下钻取,反之成为向上钻取。

钻取的实质是,增加(向下)或者减少(向上)维度。增加维度是汇总数据深入到细节数据,减少维度是细节数据概括到汇总数据。通过钻取,用户可以更深入的了解数据,发现问题,做出决策。

3、维度一致性

物理上的数据集市组成逻辑上的数据仓库,数据仓库的建立是逐步完成的,如果在分布建立数据集市的过程中维度表不一致,则会导致数据集市成为孤立的集市,不能从逻辑上组合成一个集成的数据仓库,维度一致性正是解决了这个问题。

具体使用共享同一个维度表或者让其中一个维度表是里一个维度表的子集等方式保证一致性,避免孤立数据集市的出现。

内容参考:《离线和实时大数据开发实战》

你可能感兴趣的:(Hive)