ODI 11g & 12c中缓慢变化维(SCD)的处理机制
缓慢变化维(Slowly changing Dimensions)指的是维表中的维度字段值会随着时间或业务调整,而在后续的分析中,历史数据仍然要使用旧的维度值,新的数据会使用当前维度值。在数据仓库建设过程中,ODI提供有专门的SCD 集成模块,更方便的对维表进行更新。
源和目标模型定义
本示例基于src_customer表,下面是目标维表的定义:
在上面的目标维表中,先说明一下相关的字段:
l Key,代理键:在生成的结果维表中唯一标识,一般使用Sequence标识;
l Current_ind,是否有效:当前维表中该记录是否处于有效状态;
l H_BID,自然主键:原有维表中的主键字段;
l C_mstat,维度变更字段:维表中的关键维值,即与其它事实表关联的字段,该值与维度分析有直接关系;
l 其它附属字段(h-addr, h_zip, c_bid, c_tele):其它附属信息,用于说明该记录的其它属性字段;
l C_eff,开始时间:关键维度值有效时间
l C_exp,结束时间:关键维度值失次时间
在每个字段的属性窗口中,可以设置该字段对应的类型:
上图是针对key字段的设置。
维度值状态指示器字段的设置:
针对其它属性字段,选择有源端有更新时就覆盖目标值。
原有主键字段:
维度值起始时间:
维度关键值:
源端维表定义:
该表的字段数比目标表的字段数少。
维表加载更新接口定义
如果字段不能自动匹配,需要手工映射。针对源端没有的字段,需要人工指定相应的值,如下图所示:
在流控制中,需要选择正确的IKM:
测试
原始数据:
第一次执行接口之后目标维表的数据:
在源端把cust_marstat从married改为Single之后,再次执行接口,目标维表的数据如下:
可以看到,状态指示字段已经有变化,起止时间也不同,最后,关键维字段的值已经保留了历史状态。
至此,维表的更新完成。
12c比11g的优点
在12c中,针对SCD的设置做了如下改进:
可直接在目标维表的字段上指定各字段的类型,而不用去每个字段的属性页上单独编辑,提升设置效率,也更直观的对维表进行管理。
ODI 11g & 12c中缓慢变化维(SCD)的处理机制的更多相关文章
- 缓慢变化维 (Slowly changing dimension)
维度建模的数据仓库中,有一个概念叫Slowly Changing Dimensions,中文一般翻译成"缓慢变化维",经常被简写为SCD.缓慢变化维的提出是因为在现实世 ...
- 缓慢变化维 (Slowly Changing Dimension) 常见的三种类型及原型设计(转)
开篇介绍 在从 OLTP 业务数据库向 DW 数据仓库抽取数据的过程中,特别是第一次导入之后的每一次增量抽取往往会遇到这样的问题:业务数据库中的一些数据发生了更改,到底要不要将这些变化也反映到数据仓库 ...
- DataStage系列教程 (Slowly Changing Dimension)缓慢变化维
BI中维表的增量更新一般有2种: Type 1:覆盖更改.记录的列值发生变化,直接update成最新记录. Type 2:历史跟踪更改.记录值发生变化,将该记录置为失效,再insert一条新的记录. ...
- 如何用SQL语句处理缓慢变化维(渐变维,拉链表)SCD-2?
假设有一张居民维表,需要记录居民状态的变更历史,根据Kimball建模理论,设计居民维表如下: 另外在ODS中有居民信息的每日快照表(每天都记录一份居民的全量信息):O_USERINFO 如何将ODS ...
- HIVE- SCD缓慢变化
SCD缓慢变化维,比如一个用户维表,用户属性会变化,但是不会变化很剧烈,可能一年只会变化一两次,也不会所有用户的属性都会有变化,只有少量的数据发生变化,所以叫缓慢变化维.这种问题就是由于维度的变化所造 ...
- oracle 12c 中asm元数据是否有所变化
详见原文博客链接地址: oracle 12c 中asm元数据是否有所变化
- 浅析Oracle 12c中Data Guard新特性
浅析Oracle 12c中Data Guard新特性 写在前面 无论是做Oracle运维的小伙伴还是老伙伴,想必对Oracle数据库的数据级灾备核心技术—Data Guard是再熟悉不过了!这项从 ...
- xtts v4for oracle 11g&12c(文档ID 2471245
xtts v4for oracle 11g&12c(文档ID 2471245.1) 序号 主机 操作项目 操作内容 备注: 阶段一:初始阶段 1.1 源端 环境验证 migrate_check ...
- 如何在Oracle 12C中添加多个分区 (Doc ID 1482456.1)
How to Add Multiple Partitions in Oracle 12C (Doc ID 1482456.1) APPLIES TO: Oracle Database - Enterp ...
随机推荐
- parent relation column can't be updated LESSON_EXTENDED_ATTRIBUTE->LESSON_ID
MyCat 中 作为分片的主键不允许更新 , 需要设置为null,调用updateSelectiveByPrimaryKey来更新数据 parent relation column can't be ...
- validate插件:验证密码没有空格 用户名是5-10位 至少包含数字和大小写字母中的两种字符
//校验密码是否含有空格 jQuery.validator.addMethod("notblank", function(value, element) { var pwdblan ...
- arguments的基本用法
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/ ...
- sh脚本异常:bad interpreter: No such file or directory
转:http://bluedest.iteye.com/blog/1674963 在Linux中执行.sh脚本,异常/bin/sh^M: bad interpreter: No such file o ...
- hadoop分布式的环境搭建
版本: 使用hadoop1.1.2 JDK为java7 1.下载hadoop 2.配置hadoop文件 3测试 1.下载hadoop: 1.1 在https://archive.apache.o ...
- Tarjan--LCA算法的个人理解即模板
tarjan---LCA算法的步骤是(当dfs到节点u时): 实际: 并查集+dfs 具体步骤: 1 在并查集中建立仅有u的集合,设置该集合的祖先为u 1 对u的每个孩子v: 1.1 tarj ...
- nyoj------布线问题(kruscal+求最小值)
布线问题 时间限制:1000 ms | 内存限制:65535 KB 难度:4 描述 南阳理工学院要进行用电线路改造,现在校长要求设计师设计出一种布线方式,该布线方式需要满足以下条件:1.把所有 ...
- IO流--复制picture ,mp3
import java.io.BufferedReader; import java.io.BufferedWriter; import java.io.FileInputStream; import ...
- JSONP的学习(收集整理)
JSONP和JSON之间有什么联系吗? JSON(JavaScript Object Notation) 是一种轻量级.可读的基于文本的的数据交换格式.,是一种轻量的数据交换开放标准.源于JavsSc ...
- [工作技能]SVN
有的时候SVN上传txt文本文件,会报是bin文件的错误,解决方式是在.subversion文件夹下的config文件中加这么一句 *.txt = svn:mime-type=text/plain;s ...