【多选题】
A 方法0: 保留原始值 方法1: 直接覆盖(修改维度属性为最新值,直接覆盖,不保留历史信息) 方法2: 增加新行(在维度表中增加新的一行,新行中采用新的属性值。此种方式需要借助代理键,需要为新行分配新的代理键,将其作为事实表的外键)
B 方法3:增加新属性列(在维度表中增加新的一列,原先属性列存放上一版本的属性值,当前属性列存放当前版本的属性值) 方法4: 增加微型维度(当某维表是一个大型维度表,采用方式2时,如果某些维度属性变化相对较快,会导致该维表变得越来越大,导致存储压力和性能压力) 方式5: 微型维度与方式1支架表(该方式是方式1和方式4的结合,即建立微型维度后,微型维度的主键不仅作为事实表的外键,也作为主维度的外键,在主维度中,此微型维度属性以方式1处理,即当该属性发生变化时,直接覆盖,不保留历史信息)
C 方式6: 将方式1属性增加到方式2维度(该方式是方式1、2、3的结合,即同时增加维度行和维度列,并以方式1处理新加的维度列(当前属性))方式7:双重外键并且方式1与方式2结合(在方式2的基础上,不仅是维度的代理键作为事实表外键,维度的自然键(如果自然键会被重新分配,发生变化,应该使用持续性超自然键)也同时作为事实表外键)方式8: 快照维度(此种方式比较暴力,每天保留全量维度属性的快照数据,自然键及日期键作为事实表的外键。)
D 方式9:历史拉链维度(此方式是方式2的阉割版,同样是增加维度行,但舍弃了代理键,因为如MapReduce之类的分布式计算引擎,维护全局唯一的代理键难度大,成本高)
查看更多