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) 中的“用户定义的 Java 类”步骤中获取所有参数
无法连接到 Pentaho Kettle 中的 PostgreSQL 数据库