Kettle手册(八)- 循环

Kettle手册(八)- 循环,第1张

有的时候,我们想要在Kettle中实现这个循环的功能,比如,批量加载数据的时候,我们要对10张表执行同样的 *** 作,只有表名和一些信息不一样,这时,写个循环就省事儿多了

这里的话,我们主要是通过一个将结果集返回,然后通过转换的设置来实现的

这个转换,只要是将我们要遍历的结果集返回,

表输入,我们就是返回了5条记录,来做遍历

这里呢,我们就是需要遍历的转换了,这里,我们只是获取结果集,然后将结果集输出

还有一个很重要的一步,怎样让这个转换可以根据结果集的条数,去循环执行呢?

就是这个“执行每一个输入行”

网上有很多的例子,介绍怎样用JS来控制循环,这里我们也简单的测试下

这一步,和上面的一样,就是将结果集返回

这里主要是使用JS将结果集进行遍历,通过JS,将一些结果存放到变量里面,在后面的 *** 作中就可以使用了,通过${xxx}的方式使用

这个其实和Java、JS里面循环思路一样,通过结果集的总数“total_num”和下标“LoopCounter”进行判断

这一步,就是判断下标的值和结果集的总数,进行对比,

输出下,我们想要使用的变量

这一步,给下标加一,然后获取下一条记录

好了,执行下,我们看看

前面我们介绍了 Kettle的Spoon的转换和作业定时任务GUI设计方式以及运行,但是在实际应用中,我们需要计划任务是在服务器后台运行。

首先我们需要了解Kettle的Kitchen和Pan

Kitchen——作业(job)执行器 (命令行方式)

Pan——转换(trasform)执行器 (命令行方式)

下面我们将重点讲解经常会用到的 作业执行器 Kitchenbat 。

1、新建一个bat文件,命名jobbat,然后编辑,输入内容如下:

注意:确保路径的正确性。

2、双击jobbat,即可运行。

我们已经建立了命令行运行的bat文件,并且已经可以正确执行我们的ETL任务了,但是现在我们在运行bat后,桌面上面会一直存在一个控制台的黑窗口,我们可以使用bat命令中的隐藏窗口的命令。

修改我们的jobbat文件

在此双击jobbat运行,我们将不会再看到控制台黑窗口继续保留在桌面上,并且等待设置的间隔时间后,我们可以看到日志文件记录。

···

2017/12/07 16:51:26 - Kitchen - Logging is at level : 基本日志

2017/12/07 16:51:26 - Kitchen - Start of run

2017/12/07 16:51:31 - job2 - 开始执行任务

2017/12/07 16:51:31 - job2 - job2

2017/12/07 16:53:31 - job2 - 开始项[简单表同步]

2017/12/07 16:53:31 - 简单表同步 - Loading transformation from XML file [file:///D:/KettleProject/TEST2ktr]

2017/12/07 16:53:31 - 简单表同步 - Using run configuration [Pentaho local]

2017/12/07 16:53:31 - 简单表同步 - Using legacy execution engine

2017/12/07 16:53:31 - TEST2 - 为了转换解除补丁开始 [TEST2]

2017/12/07 16:53:32 - 表输入0 - Finished reading query, closing connection

2017/12/07 16:53:32 - 表输入0 - 完成处理 (I=3, O=0, R=0, W=3, U=0, E=0)

2017/12/07 16:53:32 - 插入 / 更新0 - 完成处理 (I=3, O=0, R=3, W=3, U=1, E=0)

···

上一篇: Kettle入门之三 Kettle定时任务(GUI)

下一篇: Kettle入门之五 Kettle应用场景(增量插入和更新)

增量同步的方式有很多种,我使用的是: 快照表 + 触发器

需求:

当主库库表发生增删改时,从库库表与主库库表数据保持一致。

环境:

1、Mysql

2、kettle 71

思路:

1、在主库中,将需要同步的库表新建快照表,表结构一致。

2、在主库中,分别新增库表的增、删、改的触发器。

2、新建一个转换,该转换只针对一张表的增删改。

3、新建‘表输入’控件,查询主库的快照表

4、新建‘插入/更新’控件,插入数据到从库的库表,查询的关键字要求唯一。

5、新建‘删除’控件,将主库的快照表中的数据删除。

注意: 主库的库表,要新增针对增、删、改的三张表快照,三张表的步骤同上面的1 - 5 一致。

6、新建作业控件

7、配置发送邮件服务

8、完成

Kettle 的几个子程序的功能和启动方式

Spoonbat: 图形界面方式启动作业和转换设计器。 

Panbat: 命令行方式执行转换。

Kitchenbat: 命令行方式执行作业。 

Cartebat: 启动web服务,用于 Kettle 的远程运行或集群运行。 

Encrbat: 密码加密 

(请注意这里各个文件的名字,很有趣,类似于hadoop中的名字,这也许是属于国外程序猿的一种幽默吧)

转换和作业

Kettle 的 Spoon 设计器用来设计转换(Transformation)和 作业(Job)。

转换主要是针对数据的各种处理,一个转换里可以包含多个步骤(Step)。

作业是比转换更高一级的处理流程,一个作业里包括多个作业项(Job Entry),一个作业项代表了一项工作,转换也是一个作业项。

*** 作界面如下 

保存作业

用户通过 Spoon 创建的转换、作业、数据库连接等可 

以保存在资源库和 XML 文件中。

转换文件以 ktr 为扩展名,作业文件以 kjb 为扩展名

资源库可以是各种常见的数据库。可以在 Spoon 中自动创建资源库,资源库默认用户名和密码是admin/admin。

输入步骤简介

输入类步骤用来从外部获取数据,可以获取数据的数据源包括,文本文件(txt,csv,xml,json)数据库、 Excel 文件等桌面文件,自定义的数据等。对特殊数据源和应用需求可以自定义输入插件。

输入内容部分截图如下: 

转换步骤简介

转换类步骤是对数据进行各种形式转换所用到的步骤。

例子: 

- 字段选择 (就比如我们我负责的现在我们公司的数据库转移工作,字段选择很重要) 

- 计算器

- 增加常量

流程步骤简介

流程步骤是用来控制数据流的步骤。一般不对数据进行 *** 作,只是控制数据流。

例子: 

过滤步骤 

输出步骤简介

既然有输入和过滤,那么一定也要有输出了。输出步骤是输出数据的步骤,常见的输出包括文本文件输出、表输出等,可以根据应用的需求开发插件以其他形式输出。

例子: 

表输出等,如下图 

总结

String firstnameField;

String lastnameField;

String nameField;

public boolean processRow(StepMetaInterface smi, StepDataInterface sdi) throws KettleException

{

// 获取输入

//

Object[] r = getRow();

// 输入为空,直接false

//

if (r == null) {

setOutputDone();

return false;

}

// 处于性能考虑,parameter只查一次

//

if (first) {

firstnameField = getParameter("FIRSTNAME_FIELD");

lastnameField = getParameter("LASTNAME_FIELD");

nameField = getParameter("NAME_FIELD");

first=false;

}

// 用 createOutputRow() 来保证output的数组够大,能够装下任何新的域

//

Object[] outputRow = createOutputRow(r, dataoutputRowMetasize());

String firstname = get(FieldsIn, firstnameField)getString(r);

String lastname = get(FieldsIn, lastnameField)getString(r);

// Set the value in the output field

//

String name = firstname+" "+lastname;

get(FieldsOut, nameField)setValue(outputRow, name);

// putRow will send the row on to the default output hop

//

putRow(dataoutputRowMeta, outputRow);

return true;

}

以上就是关于Kettle手册(八)- 循环全部的内容,包括:Kettle手册(八)- 循环、Kettle入门之四 Kettle定时任务(后台任务)、使用Kettle工具进行增量数据同步等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/web/9641990.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2023-04-30
下一篇2023-04-30

发表评论

登录后才能评论

评论列表(0条)

    保存