Talend - одна строка для многих, переменное количество строк вывода

Background: It's common in Talend to use something like tSplitRow to map one row with many fields into multiple rows. A row with fields:

Date | Name | MorningPhone | Day Phone | EveningPhone ...could be split into:

Date | Name | Phone ... and you'll always have 3 resulting rows from one row.


Question: What if I want number of rows from a variable number of fields?

I have a schema: UniqueID | FieldSet where FieldSet is a delimited field of columns divisible by nine. If there are 45 fields, in this delimited column, I want 5 rows. 81 fields => 9 rows.

Я пытаюсь использовать tJavaRow для синтаксического анализа полей, но я не знаю, как объединить это с tSplitRow для создания соответствующего количества полей.

Идеи? Благодаря!

0

2 ответы

Я использовал пользовательский tJavaRow - это превратило форматированную строку в новую таблицу. Вид взлома, но он сработал.

String input = "";
String OUT = "";


try {
      input = java.net.URLDecoder.decode(input_row.CustomField16, "ASCII");

} catch (UnsupportedEncodingException e) {
      e.printStackTrace();
}

String[] pieces = input.split(";");

/*for(int a=0; a
2
добавлено
Этот метод устарел. См. Мой ответ ниже
добавлено автор Daniel San, источник
Не могу придумать лучшего способа сделать это.
добавлено автор drmirror, источник

Talend развился после того, как этот вопрос был сделан, и гораздо лучший способ сделать это - использовать компонент tNormalize.

enter image description here

Во-первых, мы используем такой файл как вход:

pepe|123|123
juan|454|2423|34343|5454

Мы читаем этот файл с использованием компонента tFileInputRegex. Мы должны определить регулярное выражение и схему. Регулярное выражение будет:

"^([^|]+)\\|(.+)"

Схема будет:

enter image description here

Затем мы соединяем tFileInputRegex с tNormalize. Мы устанавливаем разделитель следующим образом:

"\\|"

И, наконец, мы используем вывод по мере необходимости.

1
добавлено
pro.jvm
pro.jvm
3 503 участник(ов)

Сообщество разработчиков Java Scala Kotlin Groovy Clojure Чат для нач-их: @javastart Наш сайт: projvm.com projvm.ru Наш канал: @proJVM Вакансии: @jvmjobs Конфы: @jvmconf

Java & Co
Java & Co
2 370 участник(ов)

Можно обсуждать с матом и без всё, что касается жабы, вплоть до холиваров. НЕ ИМЕЕТ ОТНОШЕНИЯ К САЙТУ JAVARUSH.RU ПРАВИЛА - https://t.me/javarush/75723 Вакансии сюда - https://telegram.me/joinchat/B7IzvUCnfo6d8t3yIxKguQ По вопросам - @thedude

learn.java
learn.java
1 888 участник(ов)

Чат для начинающих и не только Статистика: https://combot.org/chat/-1001083535868 Основной чат - @jvmchat

Java Underground
Java Underground
169 участник(ов)

https://vk.com/javatutorial

Javanese Questions
Javanese Questions
109 участник(ов)

Чат предназначен для обмена знаниями строго в формате в вопрос-ответ. Тема — Java, Kotlin и Android. Вопрос должен быть предварительно прогуглен, понятно и грамотно сформулирован, помечен хэштегами. Ответ — тем более. Куски кода размером в несколько строк можно писать прямо здесь, для больших кусков кода стоит использовать http://gist.github.com/, http://pastebin.com/, https://codeshare.io/ или любой аналогичный сервис. В некоторых случаях можно прикреплять скриншоты. Стикеры и гифки запрещены. Дополнять и уточнять вопросы и ответы — редактированием исходного сообщения. Обсуждения должны приводить к редактированию вопроса/ответа и удаляться. По хештегам можно искать существующие вопросы и овтеты: #вопрос #ответ #git #generics #java #server #awt #javafx #swing #kotlin #anko #tornadofx #ktor #android #recyclerView #performance #arch #network #permissions #storage #async