kettle 6.1 通过JS脚本与SwitchCase结合实现数据流选择

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了kettle 6.1 通过JS脚本与SwitchCase结合实现数据流选择相关的知识,希望对你有一定的参考价值。

场景:

  判断抽取的数据在目标库中是否已经存在(同一个病人是否已经存在治疗方案号):
  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进行目标步骤选择

以上是关于kettle 6.1 通过JS脚本与SwitchCase结合实现数据流选择的主要内容,如果未能解决你的问题,请参考以下文章

kettle 6.1 按时间循环增量抽取数据

应用Pentaho Data Integration(Kettle) 6.1 进行数据抽取以及指标计算(同构数据抽取)

如何安装kettle

kettle 6.1 按时间增量抽取数据

Kettle 中的循环

Pentaho Kettle 6.1连接CDH5.4.0集群