|NO.Z.00048|——————————|^^ 案例 ^^|——|Hadoop&PB级数仓.V06|——|PB数仓.v06|核心交易分析|缓慢变化|维度处理|

一、缓慢变化维与周期性事实表
### --- 缓慢变化维

~~~     缓慢变化维(SCD;Slowly Changing Dimensions)。
~~~     在现实世界中,维度的属性随着时间的流失发生缓慢的变化
~~~     缓慢是相对事实表而言,事实表数据变化的速度比维度表快。
~~~     处理维度表的历史变化信息的问题称为处理缓慢变化维的问题,简称SCD问题。
### --- 处理缓慢变化维的方法有以下几种常见方式:

~~~     保留原值
~~~     直接覆盖
~~~     增加新属性列
~~~     快照表
~~~     拉链表
### --- 保留原始值

~~~     维度属性值不做更改,保留原始值。
~~~     如商品上架售卖时间:一个商品上架售卖后由于其他原因下架,后来又再次上架,
~~~     此种情况产生了多个商品上架售卖时间。
~~~     如果业务重点关注的是商品首次上架售卖时间,则采用该方式。
### --- 直接覆盖

~~~     修改维度属性为最新值,直接覆盖,不保留历史信息。
~~~     如商品属于哪个品类:当商品品类发生变化时,直接重写为新品类。
### --- 增加新属性列

~~~     在维度表中增加新的一列,原先属性列存放上一版本的属性值,
~~~     当前属性列存放当前版本的属性值,还可以增加一列记录变化的时间。
~~~     缺点:只能记录最后一次变化的信息。
### --- 快照表

~~~     每天保留一份全量数据。
~~~     简单、高效。缺点是信息重复,浪费磁盘空间。
~~~     适用范围:维表不能太大
~~~     使用场景多,范围广;一般而言维表都不大。
### --- 拉链表

~~~     拉链表适合于:表的数据量大,而且数据会发生新增和变化,
~~~     但是大部分是不变的(数据发生变化的百分比不大),
~~~     且是缓慢变化的(如电商中用户信息表中的某些用户基本属性不可能每天都变化)。
~~~     主要目的是节省存储空间。
### --- 适用场景:

~~~     表的数据量大
~~~     表中部分字段会被更新
~~~     表中记录变量的比例不高
~~~     需要保留历史信息

 
 
 
 
 
 
 
 
 

Walter Savage Landor:strove with none,for none was worth my strife.Nature I loved and, next to Nature, Art:I warm'd both hands before the fire of life.It sinks, and I am ready to depart
                                                                                                                                                   ——W.S.Landor

 

 

posted on   yanqi_vip  阅读(22)  评论(0编辑  收藏  举报

相关博文:
阅读排行:
· 无需6万激活码!GitHub神秘组织3小时极速复刻Manus,手把手教你使用OpenManus搭建本
· Manus爆火,是硬核还是营销?
· 终于写完轮子一部分:tcp代理 了,记录一下
· 别再用vector<bool>了!Google高级工程师:这可能是STL最大的设计失误
· 单元测试从入门到精通
< 2025年3月 >
23 24 25 26 27 28 1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28 29
30 31 1 2 3 4 5

导航

统计

点击右上角即可分享
微信分享提示