ETL工具kettle学习总结 联系客服

发布时间 : 星期一 文章ETL工具kettle学习总结更新完毕开始阅读6352122d915f804d2b16c193

6. Scripting

6.1 Execute SQL script

执行SQL脚本,应该避免使用这一步骤,尽可能的使用“table input(select)”,”table output(insert)”,”update”,”delete”等步骤来替代。

譬如动态创建表(表名是可变的,table1,table2,table3): SQL脚本是: CREATE TABLE? (

ID INTEGER );

6.2 Execute row SQL script

对Execute sql script的补充,增加了可以自定义sql语句的字段名

6.3 Formula

在数据流中执行公式

6.4 Modified Java Script Value

Modified Java Script Value应该说是转换步骤里最强大的一步,可以获取前一步的输入流的所有字段,调用Java api对数据做转换等操作,改变所有输出的值。还能通过设置转换状态常量对现有转换流程做改变,(忽略转换,设置为错误,继续转换)。

脚本是 Mozilla 的 Rhino,Rhino 是一个Java实现的Javascript解释器。现在已经加入到 JDK 1.6 的 javax.script 包中了。 对数据流进行修改等操作

提供了常量,函数,输入字段,输出字段的列表显示

1) 2)

Transformation scripts 已经创建的脚本 Transformation constants Transformation functions

已经预先定义好的静态常量,不可更改,例如

SKIP_TRANSFORMATION , ERROR_TRANSFORMATION, CONTINUE_TRANSFORMATION

3)

类型转换,操作函数: 字符串,数字,日期之间的转换,字符串截取等

逻辑判断函数: isDate(var) ,isNumber(var)等

特殊函数:LoadScriptFile(var),getProcessCount(var),print(var),writeToLog(var),

getVariable(var,var)

文件操作函数:createFolder(var),deleteFile(var),getLastModifiedTime(var,var),

moveFile(var,var,var)

Input fields 获取输入流中字段的值 field.getNumber() Output fields set输出流中字段的值 field.setValue(99)

例子:

1) 过滤Null字段

var a;

if ( fieldname.isNull() ){ a = '0'; }else{

a = fieldName.getString(); }

2) 字符串截取

将字符串“12345McDonalds”前面的数字部分分割出来 var str = field.getString(); var code = \var name = \

for (i = 0; i < str.length(); i++ ){ c = str.charAt(i);

if ( ! java.lang.Character.isDigit(c) ){ code = str.substring(0, i); name = str.substring(i);

Alert(\ break; } }

3) 过滤记录行,控制转换流程

trans_Status = CONTINUE_TRANSFORMATION

if (field.getString()==’123’) trans_Status = SKIP_TRANSFORMATION

4) 使用java类库

var mydate = \

var parser = java.text.SimpleDateFormat(\

var dateObj = parser.parse(mydate); //just like how you would do in java Alert(dateObj);

6.5 Regex Evaluation

通过正则表达式验证输入字段

6.6 User Defined Java Expression

执行一些简单的java代码

譬如表达式:firstname+\也可以用Java代码:

new StringBuffer(firstname).append(\

7. Lookup

7.1 Call DB Procedure

执行存储过程并获得返回值,返回值只有一个,参数可以多个。

7.2 Check if a column exists

检查数据库表是否存在某列

7.3 Database join

改步骤允许查询等操作利用上一步的数据,譬如参数动态绑定的查询语句,可以被上一步某个字段的值替换掉

7.4 Database lookup

和database join功能类似,从数据库查询数值,作为新的字段添加到数据流中。可将前面的输出流的值作为查询比较参数