数据仓库_数据仓库_缓慢渐变维度实现的几种思路

数仓缓慢渐变维度表设计

 

缓慢渐变维度:

  维度数据会随着时间发生变化,变化速度比较缓慢,这种维度数据通常称作缓慢渐变维; 由于数据仓库需要追溯历史变化,尤其是一些重要的数据,所以历史状态也需要采用一定的措施进行保存。

 

 

大致分为以下几种实现思路

 

1)   全量快照:

每天保存当前数据的全量快照数据,该方案适合数据量较小的维度,使用简单的方式保存历史状态。

 

2)额外数据列保存历史状态

额外增加 (一列/多列) ,保留上一个或多个状态值。

Id

name

dept

Last_dept

1

jiangtai

Dep1

Dep3

 

 

3)   拉链表技术

       当维度数据发生变化时,将旧数据置为失效,将更改后的数据当作新的记录插入到维度表中,并开始生效,这样能够记录数据在某种粒度上的变化历史。

 

结合之前所讲的代理键 ,Uid_org 为原始的业务主键,Uid_agency 为代理键

Uid_agency

Uid_org

name

dept

Start_date

End_date

1

1

jiangtai

Dep1

20180501

20180509

2

1

jiangtai

Dep2

20180510

20991231

 

问题1 : 如何从拉链表中获取某一天的数据状态

SELECT *

FROM lalian_table

WHERE start_date <= ‘${bizdate}’ AND end_date >= ‘${bizdate}’

 

Ext : 缓慢渐变维度

       代理键是维度建模中极力推荐的方式,它的应用能有效的隔离源端变化带来的数仓结构的不稳定问题,同时也能够提高数据检索性能。

       但是如所见,代理键维护代价非常高,尤其是数据装载的过程中,对事实表带来了较大的影响。在基于HIVE 的数据仓库建设中影响更加严重。比如代理键的生成,事实表中关联键的状态,不支持非等值关联等问题,带来ETL 过程更加复杂。

       故在大数据体系下,谨慎使用代理键,同时对于缓慢渐变维场景,可以考虑用空间换取时间,每天保留维度表的全量快照。但是这样会带来存储成本,根据实际情况衡量。

发布了519 篇原创文章 · 获赞 1146 · 访问量 283万+

猜你喜欢

转载自blog.csdn.net/u010003835/article/details/104420843