Talend 如何计数多个外键并将它们分组成一行?

Talend 如何计数多个外键并将它们分组成一行?,talend,Talend,我有一个具有以下结构的表: ID|FK1|FK2|FK3|FK4 ID|FK1|FK2|FK3|FK4 ID|FK1|FK2|FK3|FK4 另一张桌子上有: FK|DATA FK|DATA FK|DATA FK|DATA 第一个表中的FKn列引用第二个表中的FK字段。第一个表和第二个表之间可以链接多个记录 我想要实现的是创建另一个表,其中包含链接的每个FKn的记录总数。例如: ID|FK1|FK2|FK3|FK4 A|0 |23 |9 |3 B|4 |0 |2 |0 我知道

我有一个具有以下结构的表:

ID|FK1|FK2|FK3|FK4
ID|FK1|FK2|FK3|FK4
ID|FK1|FK2|FK3|FK4
另一张桌子上有:

FK|DATA
FK|DATA
FK|DATA
FK|DATA
第一个表中的FKn列引用第二个表中的FK字段。第一个表和第二个表之间可以链接多个记录

我想要实现的是创建另一个表,其中包含链接的每个FKn的记录总数。例如:

ID|FK1|FK2|FK3|FK4
 A|0  |23 |9  |3
 B|4  |0  |2  |0
我知道如何变换行流并迭代每个FKn字段。我也会数数。我不能做的是将来自同一ID的每个FKn计数分组到一行中,因为在我使用tLoop组件后,每个计数操作都会转换为一个新行,如:

FK|count
FK|count
FK|count
FK|count
...
你知道如何通过每次将N行打包成一行来连接行吗?还是有别的办法


注意:我正在使用文本数据作为输入

如果我理解您的问题,那么我将建议以下不同的方法 (前提是您有固定数量的FK1、FK2、FK3、FK4)

tFileInput-->Tmap(左连接到FK1上的lookup tAnotherTable(FK数据)-->output-1 i将有四列-ID,FK1=(如果未找到匹配行,则为0或1-0,如果找到匹配行,则为1),FK2=0,FK3=0,FK4=0。在这种情况下,对于相同的ID,我们可以获得许多FK1值,正如您所提到的,可以有多行)

同样地,我也会 tFileInput-->Tmap(左连接到FK2上的lookup tAnotherTable(FK数据)-->output-2 i将有四列-ID、FK1=0、FK2=(如果未找到匹配行,则为0或1-0,如果找到匹配行,则为1)、FK3=0、FK4=0

tFileInput-->Tmap(左连接到FK3上的lookup tAnotherTable(FK数据)-->output-3 i将有四列-ID、FK1=0、FK2=0、FK3=(如果未找到匹配行,则为0或1-0,如果找到匹配行,则为1)、FK4=0。 ..... ... 接下来,我将把所有这些Output-1、Output-2、Output-3、Output-4合并成一个最终的结果集,比如说Union all resultional,并将它们移动到tagg和group by ID列,然后取SUM(FK1)、SUM(FK2)、SUM(FK3)

to summarize you job will look something as below

tFileInput--->tmap(withlookup)-->tHash1/tFileOutput1
tFileInput--->tmap(withlookup)-->tHash1/tFileOutput2
tFileInput--->tmap(withlookup)-->tHash1/tFileOutput3
tFileInput--->tmap(withlookup)-->tHash1/tFileOutput4


tHashInput1/tFIleInput1---
tHashInput1/tFIleInput1---
tHashInput1/tFIleInput1----
tHashInput1/tFIleInput1---  tUnite--->tAgg-->finaloutput.