informatica设计表字段有变化存历史过程

informatica 加工数据,数据的某些属性有变化了,保存变化历史记录。
例如客户表DW_CRM_COMM_CUSTOMER2,当 JYYTX、SQLXX、SCLXX三个字段有变化了 存历史记录,并标记最新记录;当CUSTOMERCODE 客户代码新增了直接插入新记录。
首先新建一个历史表DW_CRM_COMM_CUSTOMER2_HIS 在源表基础上增加 HIS_ID、记录失效时间、记录生效时间、最新记录标志 四个字段

CREATE TABLE
    DW_CRM_COMM_CUSTOMER2_HIS
    (
	    HIS_ID VARCHAR(64) NOT NULL,
        CUSTOMERCODE VARCHAR(30) NOT NULL,
        JYYTX VARCHAR(30),
        SQLXX VARCHAR(30),
        SCLXX VARCHAR(30),
	    REC_ONUSE_DATE INTEGER NOT NULL,
        REC_DISABLE_DATE INTEGER NOT NULL,
        REC_ISNEW_FLG CHARACTER(1)
        PRIMARY KEY (HIS_ID,CUSTOMERCODE)
    );
COMMENT ON COLUMN DW_CRM_COMM_CUSTOMER2_HIS.REC_ONUSE_DATE IS '记录失效时间';
COMMENT ON COLUMN DW_CRM_COMM_CUSTOMER2_HIS.REC_DISABLE_DATE IS '记录生效时间';
COMMENT ON COLUMN DW_CRM_COMM_CUSTOMER2_HIS.REC_ISNEW_FLG IS '最新记录标志';

首先Designer里先导入源表和目标表:
在这里插入图片描述
在这里插入图片描述
第一步:创建映射:
在这里插入图片描述
源表与目标历史表比较,用查找转换根据CUSTOMERCODE判断
在这里插入图片描述
在这里插入图片描述
然后把源表字段和查找的字段都拖到表达式转换里,并增加端口字段记录失效时间 REC_ONUSE_DATE、记录生效时间 REC_DISABLE_DATE 、最新记录标志 REC_ISNEW_FLG
其中REC_DISABLE_DATE 表达式为 DECODE($$IS_RUNHIS, 'N', 20190822, 'Y', TO_INTEGER($$ETL_TIME)) 这里有两个参数,要在映射下设置参数,根据是否最新记录,如果是最新则获取当前时间($$ETL_TIME)
在这里插入图片描述
最后为后面筛选做准备 增加两个端口ISNEW 表达式为 DECODE(lkp_HIS_ID,null,1,0) 这个是根据HIS_ID判断如果表里没有则返回值1 ; ISCHANGE 表达式为 IIF(JYYTX != lkp_JYYTX OR SQLXX != lkp_SQLXX OR SCLXX != lkp_SCLXX ,1,0) 当源表字段JYYTX、SQLXX、SCLXX与历史表字段比较有变化时 返回值1 否则返回值0。
在这里插入图片描述

1.筛选条件($$IS_RUNHIS = 'N' AND ISNEW = 1) OR ($$IS_RUNHIS = 'Y' AND (ISNEW = 1 OR ISCHANGE = 1)) ,表里没有相关数据,则生成一个HIS_ID 并插入其余数据。
在这里插入图片描述
插入目标表,可以用序列生成器生成一个HIS_ID
在这里插入图片描述
在这里插入图片描述

2.筛选条件:$$IS_RUNHIS = 'N' AND (ISNEW=0 AND ISCHANGE=1) ,增加历史记录
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
3.筛选条件:$$IS_RUNHIS = 'Y' AND (ISNEW = 0 AND ISCHANGE = 1) 更新记录失效时间和是否最新记录
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
最后Designer完成。
在这里插入图片描述
在这里插入图片描述
第二步:workflow里创建任务
在这里插入图片描述
然后编辑任务,修改相关参数,其中数据库,例如DB2数据库 要在Informatica 服务器上先编目 DB2数据库编目
在这里插入图片描述
在这里插入图片描述

在这里插入图片描述
数据库连接,如果数据库用户名、密码有变动,可以在关系连接里修改。
其中数据库例如DB数据库需要在Informatica服务器上先进行编目,DB2数据库编目

关系连接编辑器里:名称可以自定义,其中连接字符串是 服务器上编目的数据库的别名;若是连接Oracle数据库 连接字符串是 tnsnames.ora 里的设置的名称在这里插入图片描述
另外要注意session里面的属性页面 ,Designer里有更新模块, Treat source rows as 一般是Data driven,一般正常设计完Designer完成后编辑任务,不大幅度修改Designer ,Treat source rows as 值一般默认都是正确的。
Designer 里如果有UPDTRANS 更新策略,目标表加载方式是data_driven,如果没有一般是insert。
在这里插入图片描述
第三步:创建工作流
在这里插入图片描述

发布了52 篇原创文章 · 获赞 7 · 访问量 4万+

猜你喜欢

转载自blog.csdn.net/hyfstyle/article/details/100009627