Pentaho Kettle 中的 while 循环实现

Posted

技术标签:

【中文标题】Pentaho Kettle 中的 while 循环实现【英文标题】:While loop implementation in Pentaho Kettle 【发布时间】:2015-04-21 06:41:01 【问题描述】:

我需要有关使用 Kettle/PDI 实现 WHILE 循环的指导。场景是

(1) 我在一个表中有一些(可能是数千或数千)数据,要通过远程服务器进行验证。

(2) 读取它们并循环到远程服务器;我为此使用修改后的 Java 脚本,因为远程服务器查找验证是在外部 Java JAR 文件中定义的(我可以使用修改后的 java 脚本上的“更改要启动的副本数...”选项并设置为 5 或 10)

(3) 更新数据库表上的结果。每个会话将有 50% 到 60% 的连接失败案例。

(4) 重复步骤 1 到步骤 3 直到全部更新成功

(5) 在第 N 个循环时停止循环;这是为了避免很长或无限循环,N值可能是5或10。

如何在 Pentaho Kettle 中设计这样的WhILE 循环?

【问题讨论】:

尝试使数据库事务化。当转换结束时没有错误,或者您想在某处发生错误时执行回滚。只需启用“使转换数据库具有事务性”,就可以做到这一点。检查this link。检查这是否解决了您的查询... 不,Rishu,它不是关于使数据库事务性的。在验证数据库表中的每条记录时,我们会在使用远程服务器进行查找时遇到与网络相关的错误。例如如果源是 1000 条记录,则在第一个周期中几乎没有 450 多条记录会成功,其余的记录会因各种原因而失败,包括网络连接。所以我们需要实现 WHILE 循环类的结构,这样可以执行 4 到 5 个循环循环,直到所有记录都被验证。 【参考方案1】:

你见过this link吗?它非常详细地解释了如何实现 while 循环。

您需要一个带有子转换的父作业来检查条件,该条件将向作业返回一个变量,以确定是中止还是继续。

【讨论】:

以上是关于Pentaho Kettle 中的 while 循环实现的主要内容,如果未能解决你的问题,请参考以下文章

Pentaho/PDI/Kettle:如何用 Excel 电子表格中的值填充“插入/更新”?

Pentaho Kettle 中的“表存在”步骤

如何在 Pentaho 数据集成 (Kettle) 中的“用户定义的 Java 类”步骤中获取所有参数

无法连接到 Pentaho Kettle 中的 PostgreSQL 数据库

Pentaho Kettle 修改的 Java 脚本 setVariable

《Pentaho Kettle解决方案》学习体会01