将第一行重定向到一个方向,将第二行重定向到其他地方

时间:2017-03-10 07:21:35

标签: talend

我需要为我的行分隔流,具体取决于给定的字段。假设我的行有三个字段,field1,field2,field3,我需要为field1的每个值发送,我遇到某个路径上的第一个字段而另一个路径上的其他字段

我该如何解决?我应该使用tFilterRow保留第一行,然后将其输出重定向连接到tMap上的输入吗?

1 个答案:

答案 0 :(得分:1)

tMap就是其中之一。您可以将布尔上下文值初始化为false以检测第一行,然后在您的tMap输出中使用具有此布尔值的过滤器。在第一个输出中,将布尔值更改为true。

编辑:带值内存。在作业中声明对象类型上下文值(field1Values)。

[tJava]
|
| onSubjobOk
|
[你的迭代组件] - [tMap] - output1 - [tJavaRow]

在tJava中

  

context.field1Values = new HashMap();

在output1的tMap过滤器

  

(((HashMap中)context.field1Values).containsKey(currentRow.filed1)!);

在output2的tMap过滤器中(不显示)

  

((HashMap中)context.field1Values).containsKey(currentRow.filed1);

在你的tJavaRow

  

((HashMap)context.field1Values).put(input_row.field1,true);