Talend 塔伦德第二序列号

Talend 塔伦德第二序列号,talend,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;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时,我都需要重置序列号


有什么建议吗?

你可以用下面的方法来做

yourInput--tJavaRow--tMap--youroutput

  • 创建名为oldID as int的上下文变量\
  • 在tJavaRow中添加以下代码

    if(!input_row.ID.equalsIgnoreCase(context.oldID)){ 数字重置序列(“i”,0); context.oldID=input\u row.ID; }

  • 在tJavaRow之后添加tmap,并添加具有名称计数器的附加列

  • 在计数器列中添加以下代码

    数字序列(“i”,1,1)

  • 现在执行作业将获得预期的输出

  • 我的输出

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

    有一种更简单的方法可以做到这一点:您可以使用类似输入->tMap->输出的模式。 然后在tMap中,只需添加一个新的整数列“counter”,并用
    Numeric.sequence(row1.NAME,1,1)


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

    非常感谢。这就是我要找的。