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结合实现目标步骤选择的更多相关文章
- 引用第三方高德地图接口---使用js脚本进行开发地图定位的步骤
①在高德地图开发平台注册一个账号,获取key ②添加新的key ③引入map插件 ④复制过来map的脚本代码和编写搜索框 <script type="text/javascript&q ...
- 关于Cocos Creator用js脚本代码播放骨骼动画的步骤和注意事项
步骤: 1.用cc.find()方法找到相应的骨骼动画节点,并把这个对象赋值给一个var出来的新对象. 具体代码:var spineboy_anim = cc.find("UI_Root/a ...
- 【转】第6篇:Xilium CefGlue 关于 CLR Object 与 JS 交互类库封装报告:自动注册JS脚本+自动反射方法分析
作者: 牛A与牛C之间 时间: 2013-11-21 分类: 技术文章 | 暂无评论 | 编辑文章 主页 » 技术文章 » 第6篇:Xilium CefGlue 关于 CLR Object 与 JS ...
- kettle学习笔记(十)——数据检验、统计、分区与JS脚本
一.概述 数据剖析和数据检验: 用于数据的检查.清洗 . 统计步骤: 提供数据采样和统计的功能 分区: 根据数据里某个字段的值,拆分成多个数据块.输出到不同的库表和文件中. 脚本: Javascrip ...
- Firebug中调试中的js脚本中中文内容显示为乱码
Firebug中调试中的js脚本中中文内容显示为乱码 设置 页面 UFT-8 编码没用, 解决方法:点击 "Firebug"工具栏 中的"选项"---" ...
- 通过easyui tab添加的子页面JS脚本必须放在body才生效
通过easyui tab添加的子页面JS脚本必须放在body才生效 可通过Chrome查看元素时,head标签是否含有你自己写的JS代码
- AngularJs中,如何在render完成之后,执行Js脚本
AngularJs是Google开源的前端JS框架.使用AngularJs, 我们能够容易地.健壮的开发出类似于Gmail一样的单页Web应用.AngularJs这个新兴的MVC前端框架,具有以下特点 ...
- JS脚本
js脚本是嵌在网页里打出的一块区域,一般写在最下端 script 脚本 // 这是单行注释的一种语法 /**/ 这是多行注释的一种语法 存储内容的东西叫变量 数据类型的有: 1 整型 ...
- C#中在AxWebBrowser控件注入JS脚本的方法
/// <summary> /// 窗体加载 /// </summary> private void JS_Load(object sender, EventArgs e) { ...
随机推荐
- net core体系-2继续认识net core
认识net core,net core到底啥?从哪说起呢?我想作为开发的码农,web项目不陌生吧,那就从对应的.net web 对应的net core Web Application项目开始吧. 下面 ...
- 线程、进程、协程 异步io
https://www.cnblogs.com/wupeiqi/articles/6229292.html
- STC15W408AS简单使用教程-简单的光强检测!
第一步:搭建开发环境 安装最新版本的STC_ISP程序烧录软件,链接:http://pan.baidu.com/s/1slLPnOD 密码:6bov 安装keil C51的51系列单片机集成IDE软件 ...
- for循环的简介及break和continue的区别
break和continue都是用来控制循环结构的,主要是停止循环. 1.break 有时候我们想在某种条件出现的时候终止循环而不是等到循环条件为false才终止. 这是我们可以使用break来完成. ...
- tp5参数绑定
关闭路由后的普通模式任然可以通过操作方法的参数绑定.控制器和空操作等特性实现url地址的简化 参数绑定(默认是按名称成对解析,): namespace app\index\Controller; cl ...
- C++学习之 —— 输入输出
案例:输入任意空格和数字,输出其中的数字之和. #include <iostream> using namespace std; int main() { ; cout << ...
- Unity容器中AOP应用示例程序
转发请注明出处:https://www.cnblogs.com/zhiyong-ITNote/p/9127001.html 实在没有找到Unity容器的AOP应用程序示例的说明,在微软官网找到了教程( ...
- ELK日志分析方案
针对公司项目微服务化,随着项目及服务器的不断增多,决定采用ELK(Elasticsearch+Logstash+Kibana)日志分析平台进行微服务日志分析. 1.ELK整体方案 1.1 ELK架构图 ...
- Web API之service worker
一.参考链接 https://developer.mozilla.org/en-US/docs/Web/API/Service_Worker_API http://www.alloyteam.com/ ...
- POJ 1230 Pass-Muraille
#include<iostream> #include<cstring> using namespace std; ; //(x,y) (x1,y1)墙的两个端点,所有墙最大列 ...