pentaho kettle中有多少种循环?

How much types of loop in pentaho kettle?

我搜索了很多,我注意到大多数方法都是使用作业或子作业来实现循环。

我觉得是不是废系统源?这是个好方法吗?

我在程序员中编写代码并知道循环语法,如 'while'、'for'、'foreach' 和一些特定的迭代器,由于某些原因我需要使用 pentaho kettle ETL 工具为了完成我的工作,我注意到 kettle 提供了脚本工具 -- javascript 让开发人员编写 java 脚本代码或 java 代码。

我觉得我们是否应该使用java脚本步骤而不是作业或子作业来实现循环功能?因为我大多数情况下只需要迭代一个小数据流,有没有其他方法可以简单地实现循环功能?

为什么 Kettle 没有执行像 'iterator' 这样的步骤?是否可以通过 kettle 开发人员实现迭代器 API?

提前致谢。

Pentaho Data Integration 使用基于流的设计,这意味着您定义流中每条记录在经过转换或作业时会发生什么。在大多数情况下,这已经取代了您的基本 for/while 循环,并具有高度并行化的额外好处,因为转换中的所有步骤同时 运行。

影响整组记录的操作(例如分组、排序、聚合)在单个步骤中得到支持,因此您永远不会真正看到循环,它是隐式的。

很少,您需要在 Javascript 步骤中使用循环来组合未知数量的字段,解析默认步骤阻塞的无效 JSON/XML 或使用其他动态结构。

作业和子作业用于组件的控制流和可重用性。它们允许您指定在何种条件下以何种顺序向 运行 进行哪些转换。 您可以在其中实现循环,但通常最好将数据分组并将其分批传递给子作业或转换。

我的经验是,如果您的第一个解决方案涉及循环,那么您对基于流的选项的理解还不够透彻。通常绘制一个分解所有案例的流程图可以让你清楚地了解转换在 Spoon 中的样子。

如果您在要使用循环的地方的问题中添加示例,也许我可以展示如何在没有循环的情况下实现相同的功能。

我对 的回答是一个 Javascript 步骤的示例,用于迭代构建 JSON 对象。您会注意到它在我不编写任何循环语法的情况下完成了它的工作,因为 JS 步骤本身已经为通过它的每一行 运行s。