请教个datastage的问题:我想要把源表中的主键(增量ID)转换成UUID再进入目标表,这个功能是否能实现

0
已邀请:
0

我是最优雅的杀手,不杀人专杀狗 - 日光之下并无新事 2016-03-27 回答

你好,可以描述详细点吗?转换成UUID 是指什么?
如果对该字段ID做操作可以用Transformer Stage 里面的函数或者自定义函数。或者可以采用采用 ORCHESTRATE.parameter_name即绑定变量参数 ,生成新的目标表主键。
有问题可以直接联系。

你好,我是采用ORCHESTRATE.parameter_name即绑定变量参数 来实现的。如图
代码:UUID 对应的值是由 sys_guid() 提供。ID 序列号是 自定义了一个序列DIM_CUSTOMER_S.NEXTVAL 当然你那边可以从数据源获取。用这个方法可以实现转换,也就是一个ID 对应唯一的一个UUID.

开发作业如下
在ORACLE 控件入库的时候设置
设置 Write Mode 方式为 PL/SQL
在PL/SQL Block 里面写对应的SQL

参考代码:
INSERT INTO DM_PBI_CUSTOMER_D
  (CUSTOMER_KEY,
   CUSTOMER_ID,
   CUSTOMER_NAME,
   BENIFITERTYPE,
   ORG_CODE,
   AREA_NAME,
   AREA_LEVEL,
   FINANCING_COST,
   ISPLATFORM,
   CARDTYPE,
   CARDNO,
   TELEPHONE,
   FAX,
   ELECTRONIC_MAIL,
   POSTCODE,
   ADDRESSCONTENT,
   START_DATE,
   END_DATE,
   VALID_FLAG,
   DEL_FLAG,
   LAST_UPDATE_DATE)
VALUES
  (DIM_CUSTOMER_S.NEXTVAL,
   ORCHESTRATE.CUSTOMER_ID,
   sys_guid(),
   ORCHESTRATE.BENIFITERTYPE,
   ORCHESTRATE.ORG_CODE,
   ORCHESTRATE.AREA_NAME,
   ORCHESTRATE.AREA_LEVEL,
   ORCHESTRATE.FINANCING_COST,
   ORCHESTRATE.ISPLATFORM,
   ORCHESTRATE.CARDTYPE,
   ORCHESTRATE.CARDNO,
   ORCHESTRATE.TELEPHONE,
   ORCHESTRATE.FAX,
   ORCHESTRATE.ELECTRONIC_MAIL,
   ORCHESTRATE.POSTCODE,
   ORCHESTRATE.ADDRESSCONTENT,
   ORCHESTRATE.START_DATE,
   to_date('4017-12-31','yyyy-mm-dd'),
   ORCHESTRATE.VALID_FLAG,
   ORCHESTRATE.DEL_FLAG,
   ORCHESTRATE.LAST_UPDATE_DATE);
1.png



UUID.png





 
0

simon_cao - 打酱油 2016-03-28 回答

checksum function应该可以帮你根据指定的列值生成UUID

要回复问题请先登录注册