1

ペンタホ変換を行い、テーブル入力を使用しています。条件は、テーブルの名前が引数として動的に渡されることです。したがって、テーブル入力には次のSQLがあります。

select * from ?

そして、このテーブル入力は、Get Variablesという変数を定義したステップからの入力を受け取り'table_name'ます。変換を実行するときに、テーブル名を渡します。

テーブル名は abc_ddmmyyyy の形式であり、ddmmyyyy は異なる場合があるため、このようにする必要があります。

4

3 に答える 3

0

これは、最初に Edit->Settings でパラメーターを設定し、パラメータータブを表示してパラメーターを追加し、TABLE_NAME のようなパラメーター名を想定してから、以下のように Java コードを記述して、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;

上記の jar ファイルは 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();
                 }

そして、ktrテーブルクエリに次のように記述しますselect * from ${TABLE_NAME}

于 2013-11-18T07:24:42.233 に答える
0

メタデータ インジェクションの使用を検討しましたか? これは役立つ記事です: http://www.pentahoevalcenter.com/data-integration/dynamic-step-metadata/

ファイル名ごとに 1 回の変換の実行に関する記事もあります: http://www.timbert.net/doku.php?id=techie:kettle:jobs:processtransonceperfile

于 2013-11-14T18:55:56.323 に答える