2014-09-07 2 views
1

Я хочу объединить два CSV-файла. Проблема, с которой я столкнулся, - это один из двух CSV-файлов, имеющих динамический столбец.Talend: Слияние CSV-файлов с динамическим столбцом

например.

Первый CSV-файл имеет две колонки. A и G. Столбец G имеет значения, разделенные запятыми.

A | G  |<-Column Names 
--|---------| 
A1| G1,G2,G3| <-Row 
A2| G2,G5,G6|<-Row 

MainCSv

Второй CSV файл имеет динамические столбцы. Но он будет иметь столбец A (uid). например

A | C1 |C2  |Othercolumns|<-Column Names 
--|-------|---------|------------| 
A1|C1Value|C2Value |   |<-Row 
A2|C1Value| C2Value |   |<-Row 

Lookup CSV

Я хочу, чтобы объединить эти два файла Таким образом, вывод будет:

A |G   | C1 |C2  |Othercolumns|<-Column Names 
--|-----------|-------|---------|------------| 
A1| G1,G2,G3 |C1Value|C2Value |   |<-Row 
A2| G2,G5,G6 |C1Value| C2Value |   |<-Row 

enter image description here

Я не могу использовать TMAP, потому что второй файл имеет динамические столбцы ,

Пожалуйста, дайте мне знать, как я могу это достичь.

ответ

0

Поскольку ваш столбец A статический, вы все равно можете использовать tMap для этого.

Простая работа может выглядеть следующим образом:

Job layout

Прежде всего, установите схему для своего второго CSV, чтобы иметь 2 колонки: A (строка типа) и RemainingCols (динамический тип).

CSV2 schema

И ваш первый CSV должен иметь схему так:

CSV1 schema

Тогда просто возьмитесь два источника данных с TMAP как обычно:

tMap configuration to join the 2 schemas

+0

Я сделал это. Но он только извлекает столбец G. – sid

+0

Я добавил несколько примеров скриншотов. Это вообще помогает? Если вы не можете показать нам, что вы сделали, отредактировав свой вопрос? – ydaetskcoR

+0

Спасибо за ввод. Я добавил скриншоты. Я делаю то же самое. – sid

0

Если вы используете Talend Open Studio, то следующее решение может быть хорошим :

  • Используйте компонент tFileInputFullRow для чтения ваших файлов.
  • С помощью tJavaRow разворачивайте строки ввода в 2 столбца: A1/Rest
  • Запустите эту строку в tMap, выполните соединение.
  • Используйте tJavaRow для создания строк для вывода.
Смежные вопросы