如何连接包含多行数据的 2 列
How concatenate 2 column that contains multiple rows of data
我使用 Talend 6.3。我想在 tmap 中连接 2 列。但是在特定的行中,有多个数据,我想将它们与另一列中的第一行匹配。
示例:
2 列:名字和姓氏
在姓名中,我有:Kevin,Zoe,Alan
在姓氏中,我有:Monta,Rey,Zom
我想要另一行将 Kevin 与 Monta、Zoe 与 Rey、Alan 与 Zom 连接起来。
talend 如何做到这一点?因为在 tmap 中,如果我连接经典,我将只有一个成功连接。
我不知道我是否解释正确,但请告诉我是否有人需要更多信息。
提前致谢
工作:
添加其他数据->登录就是ID
所以我们有一个带有 ID 和 2 列(姓名和姓氏)的流,每列包含 n 个元素。
n 可以因行而异。
目标是最终流程将所有 Name + Surname 串联起来,ID 完好无损。
这不是超级 Talend-y 方式,但您可以使用 tFlowToIterate 单独访问每一行并进行姓名 + 姓氏配对。
之后,我们访问结果列表并使用 tNormalize 对其进行拆分:
tJava 组件的代码:
List<String> nameList = Arrays.asList(((String)globalMap.get("row5.Name")).split("\s*,\s*"));
List<String> surnameList = Arrays.asList(((String)globalMap.get("row5.Surname")).split("\s*,\s*"));
for (int index = 0; index < nameList.size(); index++) {
((ArrayList<String>) context.concat).add(((Integer)globalMap.get("row5.id")) + ";" + nameList.get(index) + ";" + surnameList.get(index));
}
tFixedFlowInput 的代码"Use context (list)":
StringHandling.EREPLACE(StringHandling.EREPLACE(context.concat.toString(),"\[",""),"\]","")
结果:
很抱歉:
当我在列中只有一个数据时,连接工作。赛格里只有凯文和蒙塔。
可能是我的架构中的 tDernormalize 的原因。
用列表设置全局变量的代码
获取我的列表的代码
我有这个结果(第一个组织是空的,第一个和第二个必须有santeffi,不要看第一列,第二个是好的)
javaRow之前的数据(code和libelle在不同的列)
我使用 Talend 6.3。我想在 tmap 中连接 2 列。但是在特定的行中,有多个数据,我想将它们与另一列中的第一行匹配。
示例:
2 列:名字和姓氏
在姓名中,我有:Kevin,Zoe,Alan
在姓氏中,我有:Monta,Rey,Zom
我想要另一行将 Kevin 与 Monta、Zoe 与 Rey、Alan 与 Zom 连接起来。
talend 如何做到这一点?因为在 tmap 中,如果我连接经典,我将只有一个成功连接。
我不知道我是否解释正确,但请告诉我是否有人需要更多信息。
提前致谢
工作:
添加其他数据->登录就是ID
所以我们有一个带有 ID 和 2 列(姓名和姓氏)的流,每列包含 n 个元素。 n 可以因行而异。
目标是最终流程将所有 Name + Surname 串联起来,ID 完好无损。
这不是超级 Talend-y 方式,但您可以使用 tFlowToIterate 单独访问每一行并进行姓名 + 姓氏配对。
之后,我们访问结果列表并使用 tNormalize 对其进行拆分:
tJava 组件的代码:
List<String> nameList = Arrays.asList(((String)globalMap.get("row5.Name")).split("\s*,\s*"));
List<String> surnameList = Arrays.asList(((String)globalMap.get("row5.Surname")).split("\s*,\s*"));
for (int index = 0; index < nameList.size(); index++) {
((ArrayList<String>) context.concat).add(((Integer)globalMap.get("row5.id")) + ";" + nameList.get(index) + ";" + surnameList.get(index));
}
tFixedFlowInput 的代码"Use context (list)":
StringHandling.EREPLACE(StringHandling.EREPLACE(context.concat.toString(),"\[",""),"\]","")
结果:
很抱歉:
当我在列中只有一个数据时,连接工作。赛格里只有凯文和蒙塔。 可能是我的架构中的 tDernormalize 的原因。
用列表设置全局变量的代码
获取我的列表的代码
我有这个结果(第一个组织是空的,第一个和第二个必须有santeffi,不要看第一列,第二个是好的)
javaRow之前的数据(code和libelle在不同的列)