【问题标题】:talend: how to merge columns to one othertalend:如何将列合并到另一列
【发布时间】:2014-11-20 12:06:25
【问题描述】:

我有一张桌子:

||编号 || val1 || val2 || val1-2 || val2-2 || val1-3 || val2-3 || | 1 | vv1 |第一次世界大战 | vv3 |二战 | vv6 |二战 | | 2 | vv2 |二战 | vv4 |二战 | vv7 |二战 |

并且想要以下:

||编号 || val1 || val2 || | 1 | vv1 |第一次世界大战 | | 2 | vv2 |二战 | | 1 | vv3 |二战 | | 2 | vv4 |二战 | | 1 | vv6 |二战 | | 2 | vv7 |二战 |

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

我可以实现哪个 talend 组件?

【问题讨论】:

  • 谢谢。两种解决方案都有效。但是 tMap 的编辑更舒服,我可以添加表达式过滤器。

标签: talend


【解决方案1】:

另一种方法是使用 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,当“添加输出”对话框出现时 选择“create join table from”,然后在下拉列表中选择 out_1 组,这样我们从这个 out_02 组中的输出行也将转到 out_01 组。所以我们的 tmap 将只有一个输出组 out_01 包含来自 out_01 和 out_02 的行。现在在 out_02 中拖动并链接 countryName2 和 CountryCode2 列。

【讨论】:

    【解决方案2】:

    您应该为此使用 tSplitRow。在这个组件中,定义一个包含 3 个字段的模式。然后,在 Column mapping 部分,像这样定义 3 行:

    (假设您从上一个组件中获得了一个名为 row1 的流)

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

    你拥有它!

    【讨论】:

      猜你喜欢
      • 2022-07-07
      • 2014-05-30
      • 2020-09-15
      • 2013-12-13
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多