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

数仓缓慢渐变维度表设计,另一篇比较好的文章结合实际案例

数仓建设 - 缓慢变化维的10种处理方式_雾岛与鲸的博客-CSDN博客

缓慢渐变维度:

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

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

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 过程更加复杂。

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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值