Итак, у нас есть поток с идентификатором и двумя столбцами (имя и фамилия), каждый из которых содержит n элементов. n может варьироваться от строки к строке.
Цель состоит в том, чтобы получить окончательный поток с объединением всех имен + фамилий с неизменным идентификатором.
Это не Супер Talend-y способ, но вы можете использовать tFlowToIterate, чтобы получить доступ к каждой строке индивидуально и выполнить сопряжение имени + фамилии.
После этого мы получим доступ к результирующему списку и используем tNormalize, чтобы разделить его:
Код для компонента t Java:
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 «Использовать контекст (список)»:
StringHandling.EREPLACE(StringHandling.EREPLACE(context.concat.toString(),"\\[",""),"\\]","")
Результат: