Talend-将两行合并为一行

Talend-将两行合并为一行,talend,Talend,样本输入 下面是我输入的一个示例。正如您所看到的,address列有两个值,我希望将它们分离,然后合并为一个值 预期产出 这就是输出应该是什么,将值组合到一个单元格中 Talend输出 如果我将数据读入Talend,它如下所示: 您应该能够通过使用Talend中的tMemorizeRows组件来实现这一点 一个非常粗略的示例工作可能如下所示: 我在这里使用tFixedFlowInput对一些数据进行硬编码,而不是在Excel工作表中读取,但它应该与您在问题中提供的示例相匹配: tMemo

样本输入

下面是我输入的一个示例。正如您所看到的,address列有两个值,我希望将它们分离,然后合并为一个值

预期产出

这就是输出应该是什么,将值组合到一个单元格中

Talend输出

如果我将数据读入Talend,它如下所示:


您应该能够通过使用Talend中的tMemorizeRows组件来实现这一点

一个非常粗略的示例工作可能如下所示:

我在这里使用tFixedFlowInput对一些数据进行硬编码,而不是在Excel工作表中读取,但它应该与您在问题中提供的示例相匹配:

tMemorizeRows组件始终在内存中保留指定数量的行,而不是像往常一样在流中逐行处理(尽管有些组件会要求整个数据集都在内存中,例如使用排序)。然后可以将其作为数组访问。您只需将其设置为记忆所有列,并且始终只需要内存中的2行:

在这种情况下,当名称为空时,需要将前一行中的所有数据拉入下一行,这样我们就可以使用tJavaRow访问tMemorizeRows组件持有的数据,使用以下示例代码(快速拼凑):

请注意,我是如何将非空名称行的名称设置为“删除此行”的。然后,我可以使用tFilterRow从流中删除这一行,这样我们只剩下想要的输出:

给我们留下以下输出:

.-----------+---------------------------+---------------------.
|                           Output                            |
|=----------+---------------------------+--------------------=|
|name       |address                    |mailing_address      |
|=----------+---------------------------+--------------------=|
|John Carter|Washington Street USA 12345|PO Box 999 USA 12345 |
|Linda Green|London Road UK E20 2ST     |PO Box 998 UK E20 2ST|
'-----------+---------------------------+---------------------'

我想这是一个合并单元格的Excel表格?如果你把它读进去,它在泰伦德看起来怎么样。您应该能够将输入组件配置为普通,然后使用tLogRow或右键单击输入组件,然后单击data viewer以查看如何在Yes中读取它。我的输入是一个excel文件。输出是相同的,但在“名称”列上,例如John Carter在一个单元格上,在其底部是空白单元格。好的,您可以编辑您的问题以包括Talend如何读取它吗?我离开电脑几天,但如果没有人比我强,我会在回来后提供答案。我已经编辑了这个问题。好啊我将等待您的回答如果地址有3个值,那么名称有2个空格怎么办?始终是3还是动态?如果它总是3,那么只需调整答案以适合。如果它是动态的,那么您可能需要更多的工作。
.-----------+---------------------------+---------------------.
|                           Output                            |
|=----------+---------------------------+--------------------=|
|name       |address                    |mailing_address      |
|=----------+---------------------------+--------------------=|
|John Carter|Washington Street USA 12345|PO Box 999 USA 12345 |
|Linda Green|London Road UK E20 2ST     |PO Box 998 UK E20 2ST|
'-----------+---------------------------+---------------------'