粤磊 informatica powercenter学习笔记(六)
时间:2010-12-07
来源:互联网
缓慢变化维的处理
DW的经典四大特点就是 : 面向主题,集成,反映历史变化,数据相对稳定。
为了反映历史变化,比如我们常见的组织维度的年度变更,财务成本中心的变更都需要对 组织表或成本中心表先做判断,如果变更的记录在目标表中存在就更新,如果目标表中没有,我们就插入。
其实这个问题,如果直接在DB中,用高级的SQL语句也可实现:
ENV;ORACLE T1,TARGET
DROP TABLE INFO.TARGET CASCADE CONSTRAINTS;
CREATE TABLE INFO.TARGET
(
SS_ID VARCHAR2(5 BYTE),
SS_NAME VARCHAR2(72 BYTE),
MEMO VARCHAR2(4 BYTE)
)
TABLESPACE USERS
PCTUSED 0
PCTFREE 10
INITRANS 1
MAXTRANS 255
STORAGE (
INITIAL 64K
MINEXTENTS 1
MAXEXTENTS UNLIMITED
PCTINCREASE 0
BUFFER_POOL DEFAULT
)
LOGGING
NOCOMPRESS
NOCACHE
NOPARALLEL
MONITORING;
DROP TABLE INFO.T2 CASCADE CONSTRAINTS;
CREATE TABLE INFO.T2
(
SS_ID VARCHAR2(5 BYTE),
SS_NAME VARCHAR2(72 BYTE),
MEMO VARCHAR2(4 BYTE)
)
TABLESPACE USERS
PCTUSED 0
PCTFREE 10
INITRANS 1
MAXTRANS 255
STORAGE (
INITIAL 64K
MINEXTENTS 1
MAXEXTENTS UNLIMITED
PCTINCREASE 0
BUFFER_POOL DEFAULT
)
LOGGING
NOCOMPRESS
NOCACHE
NOPARALLEL
MONITORING;
以上两张表,TARGET是目标表,我们根据T1表里的SS_ID来更新TARGET表里数据。如果SS_ID存在就做UPDATE,反之做INSERT操作。
Merge into target t2
Using t1
On ( t1.ss_id=t2.ss_id)
When matched then
Update
Set t2.memo=t1.memo
When not matched then
Insert
Values(t1.ss_id,t1.ss_nm,t1.memo);
如果用INFORMATICA如何来实现呢,INFORMATICA用一套标准的组件来实现这一功能:
上图组件如下:
1 SOURCE的定义 T1
2 SQOUCE QUALIFER
3 EXPERESSION
4 LOOKUP组件查找目标表TARGET
6 ROUTER组件
7UPDATESTRAGE组件
8目标表TARGET
理一下INFORMATICA的ETL处理过程:
从最新的维度表里读取数据,用EXPERESSION,SOURCEQUALIDFER来规范下维度表的列名及数据,用LOOKUP组件与数据库中的维度表根据SS_ID做比对,如果找到两个ID表为2,找到一个标为1,用ROUTER函数LOOKUPROW的行数来做把结果分为两部分,UPDATE组和INSERT组, 用UPDATESTRAGE来根据对应的组来做UPDATE和INSERT,插入目标表TARGET。
DW的经典四大特点就是 : 面向主题,集成,反映历史变化,数据相对稳定。
为了反映历史变化,比如我们常见的组织维度的年度变更,财务成本中心的变更都需要对 组织表或成本中心表先做判断,如果变更的记录在目标表中存在就更新,如果目标表中没有,我们就插入。
其实这个问题,如果直接在DB中,用高级的SQL语句也可实现:
ENV;ORACLE T1,TARGET
DROP TABLE INFO.TARGET CASCADE CONSTRAINTS;
CREATE TABLE INFO.TARGET
(
SS_ID VARCHAR2(5 BYTE),
SS_NAME VARCHAR2(72 BYTE),
MEMO VARCHAR2(4 BYTE)
)
TABLESPACE USERS
PCTUSED 0
PCTFREE 10
INITRANS 1
MAXTRANS 255
STORAGE (
INITIAL 64K
MINEXTENTS 1
MAXEXTENTS UNLIMITED
PCTINCREASE 0
BUFFER_POOL DEFAULT
)
LOGGING
NOCOMPRESS
NOCACHE
NOPARALLEL
MONITORING;
DROP TABLE INFO.T2 CASCADE CONSTRAINTS;
CREATE TABLE INFO.T2
(
SS_ID VARCHAR2(5 BYTE),
SS_NAME VARCHAR2(72 BYTE),
MEMO VARCHAR2(4 BYTE)
)
TABLESPACE USERS
PCTUSED 0
PCTFREE 10
INITRANS 1
MAXTRANS 255
STORAGE (
INITIAL 64K
MINEXTENTS 1
MAXEXTENTS UNLIMITED
PCTINCREASE 0
BUFFER_POOL DEFAULT
)
LOGGING
NOCOMPRESS
NOCACHE
NOPARALLEL
MONITORING;
以上两张表,TARGET是目标表,我们根据T1表里的SS_ID来更新TARGET表里数据。如果SS_ID存在就做UPDATE,反之做INSERT操作。
Merge into target t2
Using t1
On ( t1.ss_id=t2.ss_id)
When matched then
Update
Set t2.memo=t1.memo
When not matched then
Insert
Values(t1.ss_id,t1.ss_nm,t1.memo);
如果用INFORMATICA如何来实现呢,INFORMATICA用一套标准的组件来实现这一功能:
上图组件如下:
1 SOURCE的定义 T1
2 SQOUCE QUALIFER
3 EXPERESSION
4 LOOKUP组件查找目标表TARGET
6 ROUTER组件
7UPDATESTRAGE组件
8目标表TARGET
理一下INFORMATICA的ETL处理过程:
从最新的维度表里读取数据,用EXPERESSION,SOURCEQUALIDFER来规范下维度表的列名及数据,用LOOKUP组件与数据库中的维度表根据SS_ID做比对,如果找到两个ID表为2,找到一个标为1,用ROUTER函数LOOKUPROW的行数来做把结果分为两部分,UPDATE组和INSERT组, 用UPDATESTRAGE来根据对应的组来做UPDATE和INSERT,插入目标表TARGET。
作者: vzyuelei9 发布时间: 2010-12-07
用Router来实现Merge语句?
作者: kelsoncong 发布时间: 2010-12-08
哈哈,居然在这个地方捡到32个PUB币,纪念一下!
作者: kelsoncong 发布时间: 2010-12-08
相关阅读 更多
热门阅读
-
office 2019专业增强版最新2021版激活秘钥/序列号/激活码推荐 附激活工具
阅读:74
-
如何安装mysql8.0
阅读:31
-
Word快速设置标题样式步骤详解
阅读:28
-
20+道必知必会的Vue面试题(附答案解析)
阅读:37
-
HTML如何制作表单
阅读:22
-
百词斩可以改天数吗?当然可以,4个步骤轻松修改天数!
阅读:31
-
ET文件格式和XLS格式文件之间如何转化?
阅读:24
-
react和vue的区别及优缺点是什么
阅读:121
-
支付宝人脸识别如何关闭?
阅读:21
-
腾讯微云怎么修改照片或视频备份路径?
阅读:28