“缓慢变化维“初认知

数据仓库中遇到'缓慢变化维'时,指维度表数据会随时间逐渐变化。常见解决方案包括直接修改原始属性值、保留原始属性值、创建新表、新增列以及添加新记录。直接修改和保留原始属性值可能导致数据丢失或无法反映变化;创建新表和新增列则增加复杂性和风险。而添加新记录(如拉链表)是推荐的做法,能保留历史并方便获取不同时间段的维度信息。
摘要由CSDN通过智能技术生成

"缓慢变化维" : 在DIM层中,一些维度表的数据并不是固定不变的,而是会随着时间,随着批量的进行发生缓慢的变化的,这种缓慢变化的维度称作"缓慢变化维"(SCD).

举例:

以下为简化的用户信息维表

用户可以操作账户,修改自己的uname,使得维表的uname数据发生变化,对此有以下几种解决方案;

1.修改原始属性值->即修改维表里uname的值为最新值.这种情况会造成历史数据的丢失,重跑数据的情况下关联不上历史数据,生成错误的数据,并不推荐使用.

2.保留原始属性值->即保留原来的uname.这种情况直接忽视了"缓慢变化维"的"变化"二字,将维表默认为静态表.不推荐使用.

3.创建新表->新表中保留新的维度信息,这种情况会增加数据的关联,延长任务时间;并且如果维表每次有一条数据变化,就需要创建一张新表,明显增加了工作量和数仓不稳定性.不推荐.

4.创建新列->在原来的表中创建一个新的属性,保存变化后的uname.这种情况虽然保留了历史,但是对维表的频繁DDL操作并不符合数仓设计的规范,和创建新表一样,也会增加数仓的报错风险.不推荐.

5.添加新记录->在原来的表中添加一条新的维度记录,主键大于原来的主键,若要取最新数据可按照主键求max,也可以在维表上维护开始和结束时间两个字段(类似于拉链表),通过时间取不同时段的维度信息.推荐使用.

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值