Pentaho Kettle: сравнить два входа с петлей? - PullRequest
0 голосов
/ 29 октября 2019

У меня есть два отдельных поля (из двух отдельных файлов Excel) для сравнения в Pentaho Kettle. Имя поля первого файла Excel называется «расположение», а имя поля второго ввода Excel называется «направление». Оба поля имеют тип данных «String».

Записи поля «location» являются уникальными, тогда как записи поля «direction» НЕ являются уникальными. Например, они могут содержать строку «Нью-Йорк» несколько раз.

Я хочу сравнить КАЖДУЮ запись поля «direction» со ВСЕМИ записями поля «location». Поскольку поле местоположения служит справочной таблицей, я хочу знать, какие записи направления НЕ перечислены в записях местоположения.

Результатом должно быть количество строк (направлений), которые не отображаются в таблице расположения. Для этого мне понадобятся два цикла (которые являются вложенными) для сравнения каждой записи направления с каждой записью местоположения. Как я могу добиться этого с помощью чайника Pentaho? Я уже пробовал это с Merge Rows (diff) - и Modified Java Script Value-Steps, но не смог. Любые предложения о том, как решить эту проблему?

1 Ответ

1 голос
/ 29 октября 2019

Pentaho работает с использованием потоков, циклы обычно не нужны.

На изображении ниже я построил простое преобразование, которое должно делать то, что вы хотите:

  1. Два Excelвходные данные должны дать вам ваши направления и местоположения, а также любые дополнительные поля, которые вам нужны.
  2. Поиск Stream загружает все записи из Locations в память для сравнения (настройте Locations Excel Input в качестве шага поиска), а затем ищитекаждая строка из Направления основана на полях, которые вы настраиваете (направление и местоположение).
  3. Вы должны ввести хотя бы одно поле для возврата из поиска Locations, идентификатора или самого Location.
  4. Затем строки фильтра проверяют, имеет ли новое поле (Location_id, Location, что у вас есть) какое-то значение. Если заполнено, местоположение существует, если оно пустое, оно переходит к Не найдено для дальнейшей обработки.

enter image description here

...