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) { ...
随机推荐
- Flink--基于mysql的sink和source
基于mysql的source操作 object MysqlSource { def main(args: Array[String]): Unit = { val env = StreamExecut ...
- Shell文本处理四剑客
5.1 [grep] 全面搜索正则表达式(GREP)是一种强大的文本搜索工具,能使用正则 表达式搜索文本,并把匹配的行打印出来 过滤来自一个文件或标准输入匹配模式内容 除了grep外,还有egrep, ...
- AtCoder Grand Contest 026 (AGC026) E - Synchronized Subsequence 贪心 动态规划
原文链接https://www.cnblogs.com/zhouzhendong/p/AGC026E.html 题目传送门 - AGC026E 题意 给定一个长度为 $2n$ 的字符串,包含 $n$ ...
- BZOJ4802 欧拉函数 数论
原文链接http://www.cnblogs.com/zhouzhendong/p/8117744.html 题目传送门 - BZOJ4802 题意概括 Description 已知N,求phi(N) ...
- LBS基站定位
LBS基站定位(Location Based Service,简称LBS)一般应用于手机用户,它是基于位置的服务,通过电信.移动运营商的无线电通讯网络(如GSM网.CDMA网)或外部定位方式(如GPS ...
- Shiro笔记(三)shiroFilter拦截器配置原则
参考: http://blog.csdn.net/yaowanpengliferay/article/details/17281341
- mybatis相关知识
@param解释为映射mapper.xml中的传参 mybatis中批量新增时用foreach循环,注意其中的collection属性,有list,数组 注意foreach中sql函数的写法,orac ...
- python inspect 模块 和 types 模块 判断是否是方法,模块,函数等内置特殊属性
python inspect 模块 和 types 模块 判断是否是方法,模块,函数等内置特殊属性 inspect import inspect def fun(): pass inspect.ism ...
- [ 高危 ] mt SQL注入
RANK 28 金币 28 不是很核心的系统,但是这个检测方法挺新鲜的 数据包 POST /XXXpital HTTP/1.1Content-Length: 96Content-Type: a ...
- python mysql中文乱码
问题: MySQLdb存入数据库后,在命令行查询 "select * from ip;",其中的中文都是乱码的. 但是通过python 执行 "select * from ...