我有一个具有以下结构的表:
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字段。我也知道怎么算。我无法做的是将每个FKn计数从同一个ID分组到一行,因为在我使用tLoop组件后,每个计数操作都转换为一个新行,如:
FK|count
FK|count
FK|count
FK|count
...
关于如何通过每次将N个打包成一行来了解如何连接行的想法?或者还有另一种方法吗?
注意:我正在使用文本数据作为输入
答案 0 :(得分:0)
如果我理解你的问题,那么我建议采用不同的方式,如下所示 (假设您有固定数量的FK1,FK2,FK3,FK4)
tFileInput - > Tmap(在FK1上左连接查找tAnotherTable(FK DATA)) - > output-1我将有四列 - ID,FK1 =(0或1 - 0,如果没有匹配的行是发现,如果找到匹配的行,则为1),FK2 = 0,FK3 = 0,FK4 = 0。这可能是一个情况,对于相同的ID,我们可以获得许多FK1值,如您所提到的那样,可以有多个行)..
同样我会 tFileInput - > Tmap(左连接在FK2上查找tAnotherTable(FK DATA)) - > output-2我将有四列 - ID,FK1 = 0,FK2 =(0或1 - 0,如果没有匹配的行如果找到匹配的行,则找到1,FK3 = 0,FK4 = 0。
tFileInput - > Tmap(在FK3上左连接查找tAnotherTable(FK DATA)) - > output-3我将有四列--ID,FK1 = 0,FK2 = 0,FK3 =(0或如果没有找到匹配的行,则为1 - 0,如果找到匹配的行,则为1),FK4 = 0。 ..... ... 接下来我将所有这些Output-1,output-2,output-3,output-4联合到最终结果集中,说联合所有ResultUnionall并将它们移动到tagg并按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.