如何使用Talend将ONE表的不同列映射到ONE表的一列中

时间:2018-01-23 12:59:24

标签: talend tmap expressionbuilder

我有一个包含不同列的表。这些列属于 Id,x和y 。我想使用talend将这些列映射到一个唯一ID,X和Y : 我有从MySQL到Talend的数据库连接。我将我的表添加为" MySQLInput"。
表格如下:

idN| XN  |YN   | idT |XT   | YT
1  | 2.5 | 4.5 | 2   | 6.9 | 2.7
2  | 6.9 | 2.7 | 7   | 9.9 | 2.1
5  | 4.6 | 6.6 | 9   | 1.3 | 5.5
7  | 3.2 | 7.8 | 6   | 3.2 | 3.1

在使用talend映射后,我希望将此表作为结果:

idU | XU | YU
1   | 2.5 | 4.5
2   | 6.9 | 2.7
5   | 4.6 | 6.6
6   | 3.2 | 3.1
7   | 3.2 | 7.8
7   | 9.9 | 2.1
9   | 1.3 | 5.5

我试着这样做:

enter image description here

但结果不是我所期望的:

IDU | XU | YU
1 | 2.5  | 4.5
2 | 6.9  | 2.7
5 | 4.6  | 6.6
7 | 3.2  | 7.8

我也尝试过这样做:

enter image description here

使用该表达式,但代码给我一个错误。

我还尝试创建自己的例程并在“表达式”构建器中使用它但仍然无效。

是否有人提示如何进行此映射或使用哪个组件。 问题是,我不是只有2倍相同的列,而是在同一个表中只有3个或更多,我需要在每个相似变量的最后一个唯一列中映射它们。

感谢您花时间阅读本文,并再次感谢您回答:)

1 个答案:

答案 0 :(得分:1)

这是使用tSplitRow

的简单解决方案

enter image description here

您需要将每个传入行拆分为2行:一行idN, XN, YN,第二行idT, XT, YT。 tSplitRow的列为id, X, Y 然后使用tUniqRow过滤掉重复项,如下所示:

enter image description here

输出:

.--+---+---.
|tLogRow_5 |
|=-+---+--=|
|id|X  |Y  |
|=-+---+--=|
|1 |2.5|4.5|
|2 |6.9|2.7|
|7 |9.9|2.1|
|5 |4.6|6.6|
|9 |1.3|5.5|
|7 |3.2|7.8|
|6 |3.2|3.1|
'--+---+---'