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--你的输出
- 创建名为 oldID as int 的上下文变量。\
在 tJavaRow 中添加以下代码。
if(!input_row.ID.equalsIgnoreCase(context.oldID)){
Numeric.resetSequence("i", 0);
context.oldID=input_row.ID;
}
在 tJavaRow 之后添加 tmap 并添加名称为 COUNTER 的附加列
在 COUNTER 列中添加以下代码。
Numeric.sequence("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 中,只需添加一个新的 Integer 列 "counter" 并填充 Numeric.sequence(row1.NAME,1,1)
每次输入名称更改时,它会自动重新启动序列。
我得到了以下数据:
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--你的输出
- 创建名为 oldID as int 的上下文变量。\
在 tJavaRow 中添加以下代码。
if(!input_row.ID.equalsIgnoreCase(context.oldID)){ Numeric.resetSequence("i", 0); context.oldID=input_row.ID; }
在 tJavaRow 之后添加 tmap 并添加名称为 COUNTER 的附加列
在 COUNTER 列中添加以下代码。
Numeric.sequence("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 中,只需添加一个新的 Integer 列 "counter" 并填充 Numeric.sequence(row1.NAME,1,1)
每次输入名称更改时,它会自动重新启动序列。