2013-11-07 5 views
0

Я делаю преобразование пентахо и используя вход таблицы. Условие заключается в том, что имя таблицы будет передано динамически в качестве аргумента. Таким образом, входная таблица имеет SQL:Как передать имя таблицы как вход в pentaho

select * from ? 

И эта входная таблица принимает входные данные от Get Variables шага, где я определил varibale под названием 'table_name'. Когда я запускаю преобразование, я перехожу в tablename.

Мне нужно сделать это так, потому что имя таблицы имеет форму abc_ddmmyyyy и ddmmyyyy может варьироваться.

+0

Спасибо, я нашел ответ здесь http://stackoverflow.com/questions/17243319/kettle-not-working-table-input-step – Victor

ответ

0

Это может решить за счет использования кода Java для этого сначала установите параметр в Edit-> Настройки и увидеть вкладку параметров и добавить параметр допускают имя параметра, как TABLE_NAME затем написать Java-код, как показано ниже

import org.pentaho.di.core.KettleEnvironment; 
import org.pentaho.di.core.Result; 
import org.pentaho.di.core.RowMetaAndData; 
import org.pentaho.di.core.exception.KettleException; 
import org.pentaho.di.core.util.EnvUtil; 
import org.pentaho.di.trans.Trans; 
import org.pentaho.di.trans.TransMeta; 

выше баночки находится в PDI Lib папки. и установить имя таблицы, как показано ниже

KettleEnvironment.init(false); 
       EnvUtil.environmentInit(); 
       TransMeta transmeta = new TransMeta("path of your ktr file"); 
       Trans trans = new Trans(transmeta); 
       trans.setParameterValue("TABLE_NAME",your_table_name); 
       trans.execute(null); 
       trans.waitUntilFinished(); 
       Result r = trans.getResult(); 
       List<RowMetaAndData> rowsResult = r.getRows(); 
       System.out.println(trans.getTransMeta()); 
       if (trans.getErrors() > 0) { 
       throw new RuntimeException(); 
       } 

И писать в вашей КТР таблицы запроса, как select * from ${TABLE_NAME}

0

переменные используют как $ {TABLE_NAME}. ? означает подготовленное заявление, не принесет пользы вашей работе.

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