如何根据先前处理的行数有条件地执行某些操作?

时间:2014-03-26 18:30:07

标签: talend

如果先前处理的行数大于N,我想执行一些子工作。为此,我使用以下配置:

enter image description here

tFixedFlowInput有一些行。 tAggregateRow使用count函数并输出一行数字。 tSetGlobalVar然后将此值存储到全局var中,我可以在Run If连接器中检查(在本例中,(Integer)globalMap.get(" tSetGlobalVar_1")> 3)。 然后tMsgBox显示条件是否为真。

我想要的是做同样的事情,但是以更优雅的方式,使用所需的最少组件。我想用tMsgBox直接连接tAggregateRow和Run If连接器(甚至是tFixedFlow),但我还没有找到一种方法来引用先前处理过的行数而不使用输出row2.count变量。

我怎么能这样做?

enter image description here

我应该在If条件中引用tAggregateRow操作结果而不将其连接到另一个无意义的组​​件(如开头时暴露的那样)?

1 个答案:

答案 0 :(得分:3)

对于任何talend组件,请在底部左侧工作区窗格下的outline选项卡下查看。这将列出通过该组件的全局变量可用的属性。某些属性(如输出组件插入的记录数)仅在组件完全执行后才可用(After)。

对于您的情况,您可以直接尝试使用((整数)globalMap.get(" tFixedFlowInput_1_NB_LINE")),它给出了tFixedFlowInput给出的行数(后)。 enter image description here