对于较复杂的数据处理就需要正则匹配来完成,无论是对数据的校验过滤,还是对字符串中的数据抽提,正则的处理是最方便的。 在执行sql的时候希望通过更换参数动态循环执行。 对于复杂的转化任务,如果用编程语言实现起来就会非常简单。 以上这些需求可以使用kettle的脚本控件完成。 一、几种常见的脚本控件1、正则表达式控件 使用正则表达式控件可以通过正则匹配将括号中的匹配值映射到对应的新字段上,很容易的将正则强大的数据处理能力添加在转换任务中。 2、执行SQL脚本控件 可以配置动态的sql语句(占位符方式命名参数),然后将上一步骤的数据字段进行参数赋值,并循环执行,达到sql批处理的能力,在数据增删改查方面提供灵活的镶嵌能力。 3、JavaScript代码控件 如果你熟悉javascrpt的变量命名、表达式运算、流程控制等语法,就可以利用这个控件使用javascript脚本语言进行字段的控制处理。 4、Java代码控件 如果你熟悉JAVA的变量命名、表达式运算、流程控制等语法,就可以利用这个控件使用java语言进行字段的控制处理。 二、脚本控件演示任务一:使用javascript脚本控件 使用生成记录控件生成4条固定值的模拟数据进行转换。 在javascript代码中配置如下: 编写代码如下: c=a+' 你好'; d=str2num(b)+3; 实现简单的转换任务,将a字符串后面拼接“你好”赋值给输出字段c,将b字段数值加3赋值给d,然后输出。 执行结果如图: 任务二:使用java脚本控件 同样使用生成记录控件生成5条固定值数据: 在java代码中配置如下: 代码树图路径为: java代码区代码如下: String a = get(Fields.In, 'a').getString(r); a += ' 中国'; get(Fields.Out, 'c').setValue(r, a); Long b = get(Fields.In, 'b').getLong(r); b = b + 3; get(Fields.Out, 'd').setValue(r, b); 其余代码为自动生成的,只需参考以上代码进行定义临时变量获取输出参数,对临时变量进行数据运算,运算后赋值给输出参数。本代码将a字符串增加“ 中国”赋值给c,将b值加3赋值给d。 运行结果如下: 三、关于脚本控件的几点说明1、脚本控件中的编程能力很强大,要合理利用该能力有效提高转换任务的开发效率。 2、由于java和javascript的变量都需要定义类型,在不同类型之间转化和运算过程都要考虑类型,否则由于类型问题可能导致任务失败。 3、在数据库处理任务上,很多任务都需要多步骤完成,前面步骤获取的数据作为下一个步骤的参数,灵活使用“执行SQL脚本”控件可以完成此类任务的编排。 其它文档阅读 kettle专题1:一款免费的ETL工具 kettle专题2:数据库操作 kettle专题3:数据从哪里来 kettle专题4:数据的目的地 kettle专题5:数据转换 kettle专题6:数据流控制 kettle专题7:应用控件的使用 |
|