数仓中的缓慢变化维度
- 在数据仓库建设中,如果使用维度建模,就会考虑到一些特殊的维度的处理:缓慢变化维度。
- 什么是缓慢变化维度?
从原始层ods层的数据中进行整理,得到统一粒度的维度表、事实表,往往根据不同业务部门的需求会有各个不同的主题域的划分,而每个主题域就以一张事实表为核心。维度表的数据特征相对于事实表,通常是不经常变化的。但是,有些维度可能存在缓慢变化的过程。比如供应商、渠道、用户、产品编号等,可能随着时间推移,数据会有新的变化。这时候要考虑处理缓慢变化维度的方式。下面是比较常用的几种方式,主要依据是不同的业务场景下的维度的关注点不同导致的。
(1)通常不做任何更新操作。
这种适用于一些虽然变化,但是关注点还是在于最初的原始数据,比如供应商、用户id等,因为不管如何变化,都可以通过相应的表关联找到最初的编号。
(2)通常对这样的维度表增加一个外键来记录变化数据的过程。这样的处理方式,就是有变化,就新增一列,外键是唯一键,这样可以通过外键的约束来定位到想要的变化的历史数据中需要的数据。
(3)通过增加列的形式,来记录变化的过程。通常做成历史拉链表,用维度记录的开始时间和结束时间来记录。