talend:如何将列合并到另一个

时间:2014-11-18 11:05:26

标签: talend

我有一张桌子:

|| id || val1 || val2 || val1-2 || val2-2 || val1-3 || val2-3 ||  
|  1   |  vv1  |  ww1  |   vv3   |   ww3   |   vv6   |   ww6   |   
|  2   |  vv2  |  ww2  |   vv4   |   ww4   |   vv7   |   ww7   |   

并希望拥有以下内容:

|| id || val1 || val2 ||
|  1   |  vv1  |  ww1  |
|  2   |  vv2  |  ww2  |
|  1   |  vv3  |  ww3  |         
|  2   |  vv4  |  ww4  |         
|  1   |  vv6  |  ww6  |         
|  2   |  vv7  |  ww7  |         

所以我想把一些列的内容放在其他列下。

我可以实现哪个talend组件?

2 个答案:

答案 0 :(得分:3)

另一种方法是使用tMap并在创建输出组时使用"从"创建连接表。选项...请参阅http://garpitmzn.blogspot.in/2011/12/one-way-to-split-single-row-to-multiple.html

下面的链接

下面给出了更多细节 - (正如ydaetskcoR正确指出的那样)

下面给出了一个类似的例子 - 假设您输入数据为

CountryName1      CountryCode1       CountryName2      CountryCode2
ABCDE              ABC                  XYZE             ZY

你想要的是将这一行分成两行,如下所示

countryname        countrycode
ABCDE              ABC                  
XYZE                ZY

一个快速解决方案,如果您有上述要求,您知道要拆分的行数 - 将此行作为tmap组件的输入,并在tmap中创建一个输出组,如out_1。 现在在这个out_1中拖放并输入countryName1和countryCode1列。 现在在此tmap中创建另一个输出组out_02,并在"添加输出"对话来了 选择"从"创建联接表并在下拉列表中选择out_1组,以便来自此out_02组的输出行也将转到out_01组。因此,我们的tmap只有一个输出组out_01,其中包含out_01和out_02的行。现在在out_02中拖动并链接countryName2和CountryCode2列。

image1 image_2 image_3

答案 1 :(得分:1)

为此,您应该使用tSplitRow。在此组件内部,定义具有3个字段的模式。然后,在列映射部分中,定义3行:

(假设您从前一个组件获得名为row1的流程)

row1.id | row1.val1   | row1.val2
row1.id | row1.val1-2 | row1.val2-2
row1.id | row1.val1-3 | row1.val2-3

你拥有它!