博客园  :: 首页  :: 新随笔  :: 联系 :: 订阅 订阅  :: 管理

kettle 6.1 通过JS脚本与SwitchCase结合实现目标步骤选择

Posted on 2017-01-11 15:16  徐正柱-  阅读(2720)  评论(0编辑  收藏  举报

场景:

  判断抽取的数据在目标库中是否已经存在(同一个病人是否已经存在治疗方案号):
  1.若不存在,则GROUPROWNO=1,并Insert into 目标库   ( 判断外关联字段是否为空 )
  2.若已存在(同一个病人是否已经存在治疗方案号) ,则判断更新时间是否相同
    2.1若抽取数据的创建时间、修改时间与目标库创建时间、修改时间相同,说明数据完全相同
        则执行更新操作或不执行任何操作
    2.2若抽取数据的创建时间、修改时间与目标库创建时间、修改时间不相同,说明是同一个方案号的不同版本的数据
        则将目标GROUPROWNO+1,并将ORIGINALTREATMENTPLANNO设置为TREATMENTPLAN_NO_ODS,并Insert into 目标库

 

     一、总图

 二、外关联,用于判断源端数据是否在目标端存在

三、通过 js 判断空值,并按条件进行赋值

//Script here

if (!TREATMENTPLAN_NO_ODS && typeof(TREATMENTPLAN_NO_ODS)!="undefined" && TREATMENTPLAN_NO_ODS!=0 && !INSTITUTIONCODE_ODS && typeof(INSTITUTIONCODE_ODS)!="undefined" && INSTITUTIONCODE_ODS!=0 && !SOCIALSECURITYNO_ODS && typeof(SOCIALSECURITYNO_ODS)!="undefined" && SOCIALSECURITYNO_ODS!=0 )
 {
     var ISORNOTNULL = 't';
     var GROUPROWNO=GROUPROWNO+1
 } 
else
 {
     var ISORNOTNULL = 'f';
     var GROUPROWNO=GROUPROWNO
 }
判断外关联表的字段是否为空

 

 

四、根据 ISORNOTNULL的值选择目标步骤:

五、判断更新时间是否相同

if (Number(CREATEDTIME_NUM)==Number(CREATEDTIME_NUM_ODS) )
 {
     var ISORNOTEQUQL = 't';
 }  
else
 {
     var ISORNOTEQUQL = 'f';
     var GROUPROWNO=GROUPROWNO_ODS+1;
     var TREATMENTPLAN_NO_ODS=TREATMENTPLAN_NO_ODS
     var ORIGINALTREATMENTPLANNO=TREATMENTPLAN_NO_ODS;
 }
判断时间是否相同

 

六、根据ISORNOTEQUAL值,通过SwitchCase进行目标步骤选择