在Data Vault模型基础上构建数据集市
数据仓库抽取数据的过程中,特别是第一次导入之后的每一次增量抽取往往会遇到这样的问题:业务数据库中的一些数据发生了更改,到底要不要将这些变化也反映到数据仓库中?
在数据仓库中,哪些数据应该随之变化,哪些可以不用变化?考虑到这些变化,在数据仓库中的维度表又应该如何设计以满足这些需要
但是在数据仓库中,其数据主要的特征一是静态历史数据,二是少改变不删除,三是定期增长,其作用主要用来数据分析。因此分析的过程中对历史数据就提出了要求,
有一些数据是需要能够反映出在周期内的变化历史,有一些数据缺不需要,那么这些数据应该如何来控制。
渐变维度1类 - Type 1 SCD
- 保持业务数据和数据仓库中的数据始终处于一致。
- 不记录历史数据。一切不需要维护的历史数据都可以选择这种类型。
渐变维度2类 - Type 2 SCD
- 尽可能的维护来自业务系统中的历史数据,能够真正捕获到这种历史数据的变化
- 添加新的数据。使用的比较常见,基本上除了Type 1之外的情形都会优先考虑这种类型。
渐变维度3类 - Type 3 SCD
- 添加历史列。不会追踪所有的历史记录,只会追踪上一次的历史信息。需要记录历史数据,但是又不需要记录那么多。
在不同的工具中对 SCD 的实现是不一样的,要关注的重点应该是具体的实现方式和解决思路的原型。
构建过程
最好先构建需要的PIT表和Bridge表,这样呢能够方便进行处理.
构建渐变维度1类的数据集市
它显示所有属性的最新值, 我们可以使用hub表(中心表)的键作为维度的代理主键 (PK)。建议使用现有的hub表中的代理键(MD5哈希列), 因为它已经是唯一的,
并将节省为维度生成典型整数代理项的过程。这将节省处理时间, 并允许在维度之前或与维度并行加载事实数据表。维度中的所有其他列都将来自贡献hub和Satellite表。
以已经构建好的 NorthWind DV模型为基础,构建 渐变1类维度表:
1
构建渐变维度2类的数据集市
渐变维度2类只是稍微困难一些。由于类型2跟踪值随时间变化, 这意味着每个业务主键的维度中可能有多行。因此,不能将hub表的业务主键用作维度表上的主键。
如果使用的是DV2.0, 那么建议使用与原始DV模型中相同的MD5哈希方法来创建代理主键。因此, 要在这种情况下获得唯一键,需要创建一个基于业务主键加上SAT_LOAD_DTS的哈希键。
以已经构建好的 NorthWind DV模型为基础,构建 渐变2类维度表:
1
网友评论