pentaho PDI передает переменную пользователя в командной строке

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

sh pan.sh -file = 'test.ktr' '-param: input_directory = / path / to / directory' -level = basic, где input_directory является переменной при преобразовании, и я упомянул ее как $ {input_directory}

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

Не удалось перечислить содержимое «file: ///home/user1/pdi8.1/data-integration8.1/$ {input_directory}», потому что это не папка.

может кто-нибудь помочь мне в этом. Спасибо


person Naresh Vadla    schedule 24.09.2019    source источник
comment
Так как это Linux, пробовали ли вы без кавычек? т.е. -param: input_directory = / path Кроме того, вы определили это как именованный параметр преобразования?   -  person Cyrus    schedule 24.09.2019
comment
Спасибо .. Я пробовал без кавычек, например -file = 'Events.ktr' -param: input_directory = samplefiles -level = debug Все еще та же ошибка .. Я определил ее как $ { input_directory}, и я не устанавливаю ничего, кроме передачи параметра   -  person Naresh Vadla    schedule 24.09.2019


Ответы (2)


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

введите описание изображения здесь

Итак, части головоломки:

  1. В командной строке передайте параметр, например -param: yourparam = yourvalue
  2. Определите этот же параметр в задании или преобразовании самого высокого уровня.
  3. Используйте его так же, как и любую другую переменную, с $ {yourparam}
person Cyrus    schedule 24.09.2019
comment
Спасибо за ответ .. Как передать это значение в командной строке Linux? - person Naresh Vadla; 24.09.2019
comment
То, что вы уже сделали, с -param: input_directory = / path / to / directory Уловка в том, что вы не можете просто передать параметр, а затем использовать его как переменную без предварительного определения. - person Cyrus; 24.09.2019
comment
Позвольте мне рассказать вам, что я сделал, и, пожалуйста, поправьте меня, если я ошибаюсь. сначала я определил переменную в компоненте получения файлов drive.google.com/open?id=1Mm2Ye2dGoogle.com/open?id=1Mm2Ye2dGopen?id=1Mm2Ye2dG / a> Затем я передаю эту переменную из командной строки linux .. Есть ли что-нибудь, что я делаю неправильно. - person Naresh Vadla; 24.09.2019
comment
Вам не хватает $ перед переменной - person Cyrus; 24.09.2019
comment
Его не хватало, пока я делал снимок экрана, чтобы удалить имена / каталоги клиентов (которые включали имена). Но я попробовал с $. Я получил ошибку. - person Naresh Vadla; 24.09.2019
comment
Когда я попытался передать тот же параметр в пользовательский интерфейс и выполнил задание. Но сейчас. Я включил в задание компонент set Variable. это было успешно. Когда я попробовал то же самое в командной строке Linux, я получил ту же ошибку. - person Naresh Vadla; 24.09.2019

Я думаю, что имена параметров, которые будут использоваться в задании, должны быть $ {PARAM_NAME1}, используя командную строку. Я следую приведенному ниже соглашению: "{Заменить на путь к файлу kitchen.bat}" / file: "{Заменить на путь к файлу JOB}" "- параметр: PARAM_NAME1 = PARAM_VALUE1 "" -param: PARAM_NAME2 = PARAM_VALUE2 "

person NK0709    schedule 22.11.2019