开篇介绍 关于 Slowly Changing Dimension 缓慢渐变维度的理论概念请参看 数据仓库系列 - 缓慢渐变维度 (Slowly Changing Dimension) 常见的三种类型及原型设计 本篇文章总结了实现缓慢渐变维度的几种方式,并且分析了 Changing Attribute 和 Historical Attribute 输出的逻辑过程. 示例一:SSIS 中使用 Slowly Changing Dimension 控件 示例二:使用 SQL 中 Merge 语句实现简…
在从 OLTP 业务数据库向 DW 数据仓库抽取数据的过程中,特别是第一次导入之后的每一次增量抽取往往会遇到这样的问题:业务数据库中的一些数据发生了更改,到底要不要将这些变化也反映到数据仓库中?在数据仓库中,哪些数据应该随之变化,哪些可以不用变化?考虑到这些变化,在数据仓库中的维度表又应该如何设计以满足这些需要. 很显然在业务数据库中数据的变化是非常自然和正常的,比如顾客的联系方式,手机号码等信息可能随着顾客的所在地的更改发生变化,比如商品的价格在不同时期有上涨和下降的变化.那么在业务数据库中,…
BI中维表的增量更新一般有2种: Type 1:覆盖更改.记录的列值发生变化,直接update成最新记录. Type 2:历史跟踪更改.记录值发生变化,将该记录置为失效,再insert一条新的记录. 这两种其实都可以通过sql的left join来实现,不过DataStage给我们提供一个组件,可以很好的实现这个功能,这就是slowly changing dimension. 1 缓慢变化维表示例 如图1所示,是一个常用的缓慢变化维,该表的进数逻辑为: 当记录新插入到改表时,STARTDATE是…
开篇介绍 在从 OLTP 业务数据库向 DW 数据仓库抽取数据的过程中,特别是第一次导入之后的每一次增量抽取往往会遇到这样的问题:业务数据库中的一些数据发生了更改,到底要不要将这些变化也反映到数据仓库中?在数据仓库中,哪些数据应该随之变化,哪些可以不用变化?考虑到这些变化,在数据仓库中的维度表又应该如何设计以满足这些需要. 很显然在业务数据库中数据的变化是非常自然和正常的,比如顾客的联系方式,手机号码等信息可能随着顾客的所在地的更改发生变化,比如商品的价格在不同时期有上涨和下降的变化.那么在业务…
      维度建模的数据仓库中,有一个概念叫Slowly Changing Dimensions,中文一般翻译成"缓慢变化维",经常被简写为SCD.缓慢变化维的提出是因为在现实世界中,维度的属性并不是静态的,它会随着时间的流失发生缓慢的变化.这种随时间发生变化的维度我们一般称之为缓慢变化维,并且把处理维度表的历史变化信息的问题称为处理缓慢变化维的问题,有时也简称为处理SCD的问题. 个人感觉wiki上对缓慢变化维的定义比较详细,所以翻译此文并加入个人的观点看法.原文请参照 :http…
突发奇想,用了这么久的DataStage,想要写点东西祭奠那逝去的岁月.希望可以坚持一直写完. DataStage系列教程 (Change Capture) DataStage系列教程 (Pivot_Enterprise 行列转换) DataStage系列教程 (Slowly Changing Dimension)缓慢变化维…
缓慢变化维(Slowly changing Dimensions)指的是维表中的维度字段值会随着时间或业务调整,而在后续的分析中,历史数据仍然要使用旧的维度值,新的数据会使用当前维度值.在数据仓库建设过程中,ODI提供有专门的SCD 集成模块,更方便的对维表进行更新. 源和目标模型定义 本示例基于src_customer表,下面是目标维表的定义:…
Change Capture可以比较具有相同列的数据集的差异,得出一个数据集(After)在另一个数据库(Before)的基础上产生的哪些变化.变化类型如表1: 变化代码 变化 中文说明 0 no change 无变化 1 insert 新增 2 delete 删除 3 edit 有变化 表1 变化种类 1 JOB示例 如图1,我们最终做出的JOB会是这个样子.它包含3个序列文件组件data_before.data_after.cmp_result:2个排序组件sort_before.sort_…
有人提到Pivot_Enterprise这个组件,之前没有用过,今天捣腾了会,写下来供以后参考,如果有什么不对的,还请多指出,谢谢! Pivot_Enterprise主要用来进行行列转换. 1 示例 如下两表数据的相互转换. 2 操作 在接下来的例子都是用到三个组件,源文件.pivot_Enterprise.目标文件,如Figure 1所示. Figure 1 所用到的组件 2.1 列转行 即从A->B.这里主要是Pivot_Enterprise的配置. Stage选项卡中Properties选…
假设有一张居民维表,需要记录居民状态的变更历史,根据Kimball建模理论,设计居民维表如下: 另外在ODS中有居民信息的每日快照表(每天都记录一份居民的全量信息):O_USERINFO 如何将ODS中的O_USERINFO的每日批次数据加载到居民维表D_RESIDENT_SCD中,需注意两个表必须在同一个数据源中. 在HHDI中新建数据抽取任务,也可采用执行SQL任务,在源表查询语句中写入以下SQL: SELECT     O.ID RESIDENTID,     O.NAME,     O.…