2016-11-16 11 views
-2

У меня есть эта ситуация, 2 файла.Прогон Pentaho содержит список в файл

входного файла 2 поля 6 строк:

1|BANANA ON CAGES  
2|APPLE CHIPS  
3|SPORT CARS  
4|PLANES  
5|HOUSE  
6|BOTTLES 

Список файлов 2 поля 4 строки

BANANA|FRUIT  
APPLE|FRUIT  
CAR|TRANSPORT  
PLANE|TRANSPORT 

И я желаю этот результат:

Выходной файл 3 поля 6 рядов

1|BANANA ON CAGES|FRUIT  
2|APPLE CHIPS|FRUIT  
3|SPORT CARS|TRANSPORT  
4|PLANES|TRANSPORT  
5|HOUSE  
6|BOTTLES 

Обязательно для использования PDI. Присоединить файлы (Декартовый продукт) слишком медленно. Входной файл содержит около 1 000 000 строк и файл списка около 300 000 строк

+0

Декартовым продуктом является решение или должно быть какое-то условие соединения. – Nikhil

+0

Хорошо, спасибо, есть ли способ получить такое же количество строк, сравнивающих входной файл и соединение, как и мой пример? Если условие не соответствует Y, потеряйте строку –

+0

Вам нужно больше данных. В данных, которые указывают, является ли запись во входном файле плодом или транспортом, нет ничего. Это различие должно существовать где-то в данных для компьютера, чтобы узнать, что такое «CAR»! = «СПОРТИВНЫЕ АВТОМОБИЛИ». –

ответ

0

Необходимо ли, чтобы ваш файл списка был динамическим или контент достаточно статичным?

Если статический, вы можете попробовать String Replace с RegEx. Что-то вроде:

enter image description here

После установки категории вам просто нужно будет процедить, где категория = от описания товара!.

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

EDIT: Я только что видел, что Join (Cartesian) имеет вариант REGEXP. Может быть, это быстрее, чем CONTAINS (что, я думаю, вы использовали?). Это было бы лучше настроить.

Удачи вам!