
介绍 Switch Case 控件
在转换中有这样一个控件
这个类似于SQL中的case when这种功能,通过条件控件来走不同的节点,还是有一些应用场景的,这里简单介绍下简单使用方法。
我们使用Switch Case控件,根据结果集中的某一个字段,来判断这行记录应该走下游的哪一个节点
需求1:
在Switch Case中,进行如下配置,就类似与 *** 作版的case when
然后使用3个日志控件进行输出
然后就没啥了,主要注意的一点是,转换中执行顺序的问题,在转换中每个控件的执行顺序不是按照hop串行的,如果两者没有数据流依赖,应该会并行,这里可以使用一种方式来解决,就是将一组 *** 作放到一个转换中,再去调用就可以了。
1统计是转换里面的第十三个分类。
2统计是提供数据的采样和统计功能。
分组是按照某一个或某几个进行分组,同时可以将其余字段按照某种规则进行合并。
注意:
分组之前数据应该进行排序!
案例:
从Excel读取数据,按照group进行分组统计,把结果保存到Excel
分析:
输入:Excel输入
统计:分组
输出:Microsoft Excel输出
kettle中有一个控件叫“生成随机数”,里面可以生成随机数字,随机整数,但是好像没有能指定范围的地方。
如果想实现,可以借助“java代码”来实现,以下是我的程序,经过了测试可以运行,希望对你有所帮助。
首先建立一个转换
自定义常量数据
java代码
import javautilRandom;
import javaioFile;
public boolean processRow(StepMetaInterface smi, StepDataInterface sdi) throws Exception
{
Object[] r = getRow();
if (r == null) {
setOutputDone();
return false;
}
Random rand = new Random();
int a= randnextInt(21)+5;
String randNum = StringvalueOf(a);
get(FieldsOut, "randNum")setValue(r,randNum);
putRow(dataoutputRowMeta, r);
return true;
}
设置变量
写日志
配置完毕后运行结果
因为不知道你的范围,我程序区的范围是[5,25],因此JAVA代码中为
int a= randnextInt(21)+5
百度了下随机数,你的范围请根据以下规则来写
int a =randnextInt(MAX - MIN + 1) + MIN; // a 将被赋值为一个 MIN 和 MAX 范围内的随机数
纯人工码字测试,有财富值希望追加,谢谢采纳
打开kettle,定义数据源
1
kettle中定义两个数据源,其中“DS_ERP”是来源数据库,“DS_ODS”是用于同步的数据库
END
新建转换,用于同步某一张表
1
新建一个转换(执行SQL脚本--->>表输入--->>表输出)
执行SQL脚本:删除DS_ODS库中已经存在的数据
表输入:查询DS_ERP库中的数据
表输出:将“表输入”中的结果输出到DS_ODS库中
2
执行SQL脚本:删除DS_ODS库中已经存在的数据
${qy_table_name}:这个是参数,指同步的表名
3
表输入:查询DS_ERP库中的数据
${qy_table_name}:这个是参数,指同步的表名
4
表输出:将“表输入”中的结果输出到DS_ODS库中
${qy_table_name}:这个是参数,指同步的表名
END
新建转换,用于获取需要同步的表名
1
新建一个转换(文本文件输入--->>复制结果到记录)
文本文件输入:通过读取指定txt文件,获取所有要同步的表。(这里也可以通过其他方式获取,例如通过sql查询数据库系统表)
2
指定txt文件路径
3
定义txt文件中的字段名,同上一步中定义的参数名
4
txt中定义需要同步的表,每行一张表名
END
新建任务,实现批量同步
新建任务,调用前面的转换
其中,同步表的转换需要设置循环执行,并将获取到的表名传递到转换内部
以上就是关于Kettle手册-Switch/Case 控件全部的内容,包括:Kettle手册-Switch/Case 控件、Kettle09:Kettle统计控件、Kettle如何取得指定范围的随机数等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)