2013-10-08 4 views
1

Я использую pdi 4.3.0. Я сталкиваюсь с проблемой использования именованного параметра. У меня есть три трансформации. 1.Transformation1Pentaho с именем параметр error

select name from master..sysdatabases WHERE NAME LIKE '%C%'; 

2. Transformation2

use ${name} 
select id, date from database1; 

3. Transformation 3

use ${name} 
select item from db2 where id = ${id} and date = ${date}; 

Теперь я использовал работу, чтобы выполнить эти преобразования.

всегда ошибка приходит на T3 Неизвестный столбец «Название»

+2

В Transformation1 вы передаете значение «имя» в шаг «Установить переменные»? –

+0

спасибо @ Brian.D.Myers да, я использовал строку копирования, чтобы получить преобразование 1 и определить параметр как во втором, так и в третьем преобразованиях, а также в job.but также ошибка –

+1

Вы используете предложение «LIKE» в Transformation1. По-видимому, возможно, что имя (база данных) может привести к нескольким значениям. Это верно? «Результаты строки» в PDI отличаются от переменных Job. Результаты строк могут иметь много значений; Переменные задания могут иметь только 1. Если есть несколько баз данных, с которыми вы это делаете, вам нужно будет использовать другой подход. –

ответ

0

Я бы не использовать «использование», чтобы выбрать имя базы данных. Обычно это происходит из схемы в соединении. В связи с этим вы можете использовать переменную, так же как она работает, если вы это сделаете? На самом деле я удивлен, что вы можете параметризовать таким образом - некоторые вещи в jdbc не параметризуемы!

Также проверьте различия между T2 и T3. Определяется ли это на вкладке параметров преобразования, а не в другом?

Или проверьте, как вы называете преобразования. Если это работает в одном, а не в другом, должно быть какое-то различие, возможно, вы передаете переменную вниз с одним, а не с другим.

+0

спасибо @Codek, «использование» хорошо работает, если только T1 и T2. Я также использовал '$ {name} .dbo.dbname', но также и ошибку. Нужно преобразовать 2 базы данных –

+0

ok cool - ну, по крайней мере, если у вас есть работа в некоторых случаях, вы знаете, что она работает. поэтому вам нужно просто разобраться в чем разница. – Codek

+0

Я думаю, ошибка или что-то, потому что переменная ошибка при использовании более чем 2 преобразования. –