2013-12-05 3 views
1

Просьба направлять меня к решению corect.PDI Table Iinput не отправляет значения на следующий шаг

У меня есть преобразование, как это (в Kettle - Pentaho ППД):

CSV INPUT -> 2. Modified javascript value -> 3.Table input -> 4. Text file Output 

1.CSV ВХОД - У меня есть CSV файл с 4-х столбцов (A, B, C, D) и я пройти к следующему шагу только первые 3 столбца (A, B, C)

2.Modified Javascript значение - здесь я сделать некоторое преобразование Int в строку для этого 3 столбцов и перейти к следующему шагу

3.Table ввода - здесь у меня есть выбор, подобный этому:

SELECT column1, column2, column3, column4 
     FROM tablename 
     WHERE column2 = ? (this will be A) 
     AND column3 = ? (this will be B) 
     AND column6 = ? (this will be C) 
     AND column8 = 'something' 

4.Text-файл Выход - результат построения.

В предыдущей модели все в порядке, но когда я пытаюсь добавить params в качестве имени столбца в запросе Ввод таблицы нет результатов перехода к следующему шагу ... и ошибок в журнале нет. В журнале я вижу текущие значения sql и counting, но результат не переходит к следующему шагу.

запроса в таблице ввода:

SELECT 
     column1, 
     column2, 
     column3, 
     column4, 
     ? columnX (this will be A) 
     FROM tablename 
     WHERE 
      column3 = ? (this will be B) 
     AND column6 = ? (this will be C) 
     AND column8 = 'something' 

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

Спасибо! Geo

ответ

1

Я не пробовал это таким образом, но я не верю, что имена столбцов могут быть параметризованы в шаге Table Input. В этом случае я склоняюсь к динамическому построению SQL в преобразовании, а затем выполняя его с шагом Dynamic SQL row. Этот шаг принимает SQL, ранее построенный преобразованием, запускает его и соединяет результаты со строкой ввода.

Обратите внимание, что это обычное внутреннее соединение типа базы данных (если вы не установите флажок «Внешнее соединение»). Если одна строка входит и вызывает запрос в результате 3 рядов, из этого шага выводятся 3 строки.

Также обратите внимание на то, что Docs говорят о шаблоне SQL. Это то, что предоставляет метаданные этого шага для остальной части преобразования. Также обратите внимание, что любой столбец, который выбирается как ColumnX, должен быть того же типа, что и все остальные, и должен быть таким же, как соответствующий столбец в вашем шаблоне SQL. Вы не можете, например, выбрать int в одном выражении, а затем дату в другой.

Последнее замечание: вам не нужен шаг JavaScript, чтобы преобразовать ints в строки. Просто измените тип столбца на шаге ввода на строку. Как сейчас, вы конвертируете в int, чтобы сразу преобразовать обратно в строку.

+0

Я буду тестировать динамическую строку SQL. Я использую javascript, потому что в первом примере я создаю путь к следующим файлам csv на основе некоторого значения из db. – DGA

Смежные вопросы