Как я могу сопоставить каждое конкретное значение строки с идентификатором в Pentaho?

Я новичок в Pentaho, и в настоящее время у меня возникла проблема с сопоставлением определенных значений строк с идентификатором.

У меня есть файл данных примерно с 30 столбцами, один из которых предназначен для валют (USD, GBP, AUD и т. Д.). Основная цель - дать пользователю возможность выбрать до 8 (минимум 1) валют и сопоставить их с соответствующими идентификаторами 1-8. Все другие валюты, не входящие в указанные 8, будут сопоставлены с идентификатором 9. Последний шаг - вывести исходный набор данных вместе с идентификаторами.

Я почти уверен, что проделываю этот путь труднее, чем следовало бы, но вот что у меня есть на данный момент.

Я создал задание, в котором первым шагом является установка переменных для моих 8 валют, selectionOne -> AUD, selectionTwo -> GBP,…, selectionEight -> JPY.

Затем у меня есть преобразование для чтения данных из файла и использования копируемых строк для выполнения шага.

После этого у меня есть вторая задача, называемая for-each, которая является моим циклом для проверки текущей валюты в строке. В рамках этой работы у меня есть две трансформации: одна называется set-current, другая - map-Currencies.

set-current просто использует строки получения из шага результата (для получения данных из первого преобразования). Затем я использую шаг установки переменной, чтобы установить для текущей валюты значение в поле валюты. Это отлично работает, поскольку каждый проход в цикле меняет текущую переменную на правильное значение.

Карты-валюты - вот где у меня больше всего проблем. Цель состоит в том, чтобы использовать шаг строки фильтра для сравнения текущей валюты с исходными 8 выбранными валютами, а затем использовать шаг сопоставления значений для сопоставления ее с идентификатором перед выводом файла csv.

Основная проблема здесь в том, что я не могу использовать свои исходные переменные в фильтре или преобразователе значений. Итак, что я сделал здесь, так это использовал шаг получения переменных для извлечения переменных и назвал их: один, два, три,…, восемь. Это позволяет мне обойти проблему с фильтрацией, но, похоже, они не работают для преобразователя значений, что является наиболее важным шагом.

Вторая проблема заключается в том, что когда файл выводится, он выводит только одно значение (из-за цикла), выбор опции добавления работает, но это может быть проблемой, если задание выполняется более одного раза. Однако приоритетом здесь является вопрос отображения.

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

Как я уже сказал, я, наверное, усложняю задачу, чем следовало бы.

Спасибо за ваше время.

Редактировать для AlainD

Пример ввода

Пример вывода


person J.A    schedule 10.06.2018    source источник
comment
используйте шаг Stream lookup, вы можете установить по умолчанию «9» для тех, у кого нет таблицы поиска. Шаг поиска может быть шагом «Data Grid» для сохранения сопоставления идентификатора валюты ‹-›.   -  person jxc    schedule 11.06.2018
comment
Как и когда пользователь должен предоставить отображение? Это во время выполнения, через параметры, переданные в задание, или где-то в файле / таблице?   -  person Cyrus    schedule 11.06.2018
comment
Приведите пример ввода и ожидаемого результата в 4 строки / 3 столбца. А также ответьте Сайрусу: как вы планируете предоставлять отображение?   -  person AlainD    schedule 11.06.2018
comment
Привет, Сайрус. Я создал новый файл свойств, чтобы значения валюты можно было изменить в любое время и чтобы преобразование не зависело от переменных Pentaho (я создал их просто для проверки работы сопоставления). Однако проблема все еще не решена. У меня проблема с доступом к свойствам и сравнением текущего значения строки со значениями, указанными в файле свойств.   -  person J.A    schedule 11.06.2018
comment
Привет, AlainD. Я добавил небольшой пример ввода и ожидаемого вывода. Спасибо.   -  person J.A    schedule 11.06.2018


Ответы (1)


Это должно быть выполнено за одно преобразование с помощью шага Stream Lookup.

пошаговая схема поиска потока

Ввод текстового файла - это ваш основной файл, ввод свойств считывает ваш файл свойств в столбцы «Ключ» и «Значение». Вместо ввода свойств можно использовать обычный текстовый файл с двумя столбцами.

Ниже приведены настройки поиска Stream. Обратите внимание на значение по умолчанию «9» для записей, которые не найдены в потоке поиска.

Конфигурация шага поиска потока

person Cyrus    schedule 12.06.2018
comment
Это сработало !! Большое спасибо. Мне было труднее, чем следовало бы. Еще раз спасибо, я очень ценю это. - person J.A; 12.06.2018