Talend Second Sequence number

时间:2015-05-21 11:02:30

标签: talend

我有以下数据:

ID;NAME;SKILL 
1;JOE;XML 
1;JOE;JAVA 
1;JOE;ORACLE 
2;JOHN;JAVA 
2;JOHN;API

我需要一个能给我这个结构的计数器:

ID;NAME;COUNTER;SKILL
1;JOE;1;XML
1;JOE;2;JAVA
1;JOE;3;ORACLE
2;JOHN;1;JAVA
2;JOHN;2;API

我如何在Talend实现这一目标?我试图使用Number.sequence,但我不知道如何获得列ID的依赖。因此,每次出现新ID时,我都需要重置序列号。

有什么建议吗?

2 个答案:

答案 0 :(得分:3)

您可以通过以下方式完成此操作。

yourInput --- --- tJavaRow TMAP - youroutput

  1. 将名为oldID的上下文变量创建为int。\
  2. 在tJavaRow中添加以下代码。

    如果(!input_row.ID.equalsIgnoreCase(context.oldID)){     Numeric.resetSequence(" i",0);     context.oldID = input_row.ID;  }

  3. 在tJavaRow之后添加tmap并添加名为COUNTER的其他列

  4. 在COUNTER列中添加以下代码。

    Numeric.sequence(" i",1,1);

  5. 现在执行你的工作将获得预期的输出。

  6. 我的输出。

    [statistics] connected
    1|JOE|1|XML 
    1|JOE|2|JAVA 
    1|JOE|3|ORACLE 
    2|JOHN|1|JAVA 
    2|JOHN|2|API
    [statistics] disconnected
    

答案 1 :(得分:0)

有一种更简单的方法:你可以有一个类似input-> tMap->输出的模式。 然后在tMap中,只需添加一个新的Integer列" counter"并用Numeric.sequence(row1.NAME,1,1)

填写

每次输入名称更改时,它都会自动重启序列。