PDI aka Kettle:在表输入中更好地“添加常量”还是“文字字符串”?

时间:2018-07-04 07:54:07

标签: kettle pdi

在Kettle / PDI转换中,我需要在一个表上编写来自另一个表以及其他静态字符串的值。

1表输入:读取记录;

2添加常量:添加“ status” =“ A”; (和其他静态字符串)

3表输出:写入旧值+状态和其他常量

是在表输入“ select”中添加文字(从...中选择id,field1,'A'作为状态,还是从...中选择状态)更好还是使用“添加常量”步骤更好?

我认为最好减少步数,因为使用“添加常量”  您需要实例化新步骤。

编辑:“更好”的意思是更快,更少的内存消耗

2 个答案:

答案 0 :(得分:1)

我的观点是在Input Table步骤中进行最少的转换,因为PDI的理念是使所有转换可见。

现在,如果您是SQL方面的专家,或者可以选择200条行进行复杂的计算,那么我的答案将有所不同。

答案 1 :(得分:0)

在转换中再创建一个步骤将导致单独的线程分配,因为每个步骤都是至少分配一个BlockingQueue的单独线程,因为步骤之间的行通过这些结构分布在内存中。

使用一个步骤,即使添加常数这样简单,也会导致额外的资源分配。

PDI仍然很乐意成为开源。

如果您想知道如何完成此操作,这是基本转换步骤的实现(已经很长时间了)-> https://github.com/pentaho/pentaho-kettle/blob/master/engine/src/main/java/org/pentaho/di/trans/step/BaseStep.java

这是用于在步骤之间分配行的代码示例-> https://github.com/pentaho/pentaho-kettle/blob/master/core/src/main/java/org/pentaho/di/core/BlockingRowSet.java#L54

确保在SQL查询中简单添加常量PDI会产生开销。在很多情况下,如何使某些操作更快或更不消耗内存,但是关于GUI或其他任何功能,PDI实际上是著名的?