2. 判断数据的操作符
此处使用PowerCenter向导方式自动生成实现缓慢变化维的Mapping。
Wizard使用注意
(1) Desiner中源表结构必须存在。 (2) Desiner中目标表结构必须不存在。
(3) 目标表中需要增加一个字段(如PM_PRIMARYKEY),作为辅助主键,自动生成
的Mapping会根据此字段对目标表做Update操作。
测试SQL脚本
--建立测试表
DROP TABLE user_scd21; DROP TABLE user_scd23; DROP TABLE user_scd3; DROP TABLE user_scd22; DROP TABLE user_s; DROP TABLE user_scd1;
CREATE TABLE user_scd21 (
PM_PRIMARYKEY int NOT NULL, id int NOT NULL, name varchar(50), age decimal(18), addr varchar(50), PM_VERSION_NUMBER int );
ALTER TABLE user_scd21 ADD PRIMARY KEY (PM_PRIMARYKEY);
CREATE TABLE user_scd23 (
PM_PRIMARYKEY int NOT NULL, id int NOT NULL, name varchar(50), age decimal(18), addr varchar(50), PM_BEGIN_DATE datetime, PM_END_DATE datetime );
ALTER TABLE user_scd23 ADD PRIMARY KEY (PM_PRIMARYKEY);
CREATE TABLE user_scd3 (
PM_PRIMARYKEY int NOT NULL, id int NOT NULL, name varchar(50), age decimal(18), addr varchar(50), PM_PREV_addr varchar(50), PM_PREV_age decimal(18), PM_PREV_name varchar(50), PM_EFFECT_DATE datetime );
ALTER TABLE user_scd3 ADD PRIMARY KEY (PM_PRIMARYKEY);
CREATE TABLE user_scd22 (
PM_PRIMARYKEY int NOT NULL, id int NOT NULL, name varchar(50), age decimal(18), addr varchar(50), PM_CURRENT_FLAG int
);
ALTER TABLE user_scd22 ADD PRIMARY KEY (PM_PRIMARYKEY);
CREATE TABLE user_s (
id int NOT NULL, name varchar(50), age decimal(18), addr varchar(50) );
ALTER TABLE user_s ADD PRIMARY KEY (id);
CREATE TABLE user_scd1 (
PM_PRIMARYKEY int NOT NULL, id int NOT NULL, name varchar(50), age decimal(18), addr varchar(50) );
ALTER TABLE user_scd1 ADD PRIMARY KEY (PM_PRIMARYKEY);
--初始化源表数据
insert into user_s values(1,'张三',23,'北京海淀'); insert into user_s values(2,'李四',24,'北京西城');
--数据更改需要手动执行
2.1 保存所有最新记录
KEEP MOST RECENT VALUES IN TARGET
2.1.1 实现原理
此方式在目标数据库中只保留最新记录,不保存历史记录。通过判断目标逻辑主键在目标表中是否存在,如果不存在则插入新记录,如果不存在则更新已经存在的记录。这种方式适合于那些不需要记录历史记录的字段,比如职员的地址、电话等。
2.1.2 详细步骤
(1) 打开缓慢变化维向导:
Informatica PowerCenter Desiner ? Mapping Desiner ? Mapping ? Wizards ? Slowly Changing Dimensions…
(2) 输入Mapping名称并选择缓慢变化维类型:
(3) 选择源表,并设置目标表名称:
(4) 指定逻辑主键作为对照字段,并指定其他字段为非逻辑主键: