变化维度
缓慢变化维度(SCD)
SCD处理方法一般有三种
scd分析
覆盖旧记录
如果符合要求,这是最简单的处理方式
添加一列
xx, yy, new_attr, old_attr
优势: 省空间,把变化前后的属性放在一起,能直观的反映属性的变化
劣势: 只能追溯前一次的属性,也就是只能反映属性的一次变化
拉链表
拉链表,极限存储,但是无需为了拉链而拉链。能用第二种方法解决就无需拉链。大部分场景都是反映最近一次的变化。
拉链表实施
拉链表更新策略
拉链表
混合表
就是在拉链表中不仅加上start_time,end_time,还加上valid以及old_attr属性列
这样就结合了方法二和方法三的优势
快速变化维度(RCD)
在这种情况下,直接可以将快速变化维度拆出来,单独做一张表。
参考资料
层级维度
层级表与打平表的讨论
层级表是通过纵向添加记录的方式来实现层级的灵活变化,打平表如果要增减层级是需要修改表结构的。
优:从这一点而言,层级表非常灵活的支持了扩展,尤其是在类似评论这种无限层级扩展的业务场景下。层级表还有一个打平表无法实现的功能,就是跨层级多选。
劣:但是层级表和事实表关联的时候,会使得数据翻倍。
父子层级表
闭包表与桥接表
全路径
抓换
层级表与非层级表的转化
max level
父子层级表转化为闭包表
父节点中有set,通过递归从叶子节点开始,每个节点算出自己的叶子节点。
特殊场景维度
有些维度是和交易流水耦合在一起,比如订单的发生的时段,就是和流水表耦合在一起的。