Talend Second 序列号

Talend Second Sequence number

我得到了以下数据:

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 时,我都需要重置序列号。

有什么建议吗?

您可以通过以下方式进行。

你的输入---tJavaRow---tMap--你的输出

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

    if(!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. 现在执行您的作业将获得预期的输出。

我的输出。

[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 中,只需添加一个新的 Integer 列 "counter" 并填充 Numeric.sequence(row1.NAME,1,1)

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