在pentaho水壶中有多少种类型的环?

时间:2017-05-05 09:15:45

标签: loops pentaho kettle

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

我认为这是废物系统来源吗?这是一个好方法吗?

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

我认为如果我们应该使用javascript步骤而不是job或subjob来实现循环功能?因为在大多数情况下我只需要迭代一个小数据流,还有其他方法可以简单地实现循环函数吗?

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

提前致谢。

1 个答案:

答案 0 :(得分:0)

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

影响整个记录集(例如分组,排序,聚合)的操作只需一步支持,因此您再也不会真正看到循环,它是隐含的。

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

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

我的经验是,如果您的第一个解决方案涉及循环,那么您还不能很好地理解基于流的选项。通常会绘制一个拆分所有案例的流程图,让您对Spoon中的转换情况有一个很好的了解。

如果你在一个你想要使用循环的地方的问题中添加一个例子,或许我可以展示如何在没有循环的情况下实现它。

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