0

ケトルを使用して pentaho cde から pentaho データ統合にパラメーターを渡し、渡されたパラメーターを PDI で使用してテーブルを更新するシナリオがあります。パラメータを渡し、渡されたパラメータを PDI で取得するにはどうすればよいですか?

前もって感謝します!!!

4

2 に答える 2

0

Pentaho プラグイン ビルダー、SPARKL を使用する必要があります。

これにより、変換を呼び出し可能なエンドポイントとしてアップロードし、CDE ダッシュボードを使用して呼び出すことができます。

まず、パラメータを期待する変換が必要です。より高度な変換に進む前に、テストで試すことができます。

例: パラメーター

パラメータを定義し、Get Variables ステップでフェッチする


次に、SPARKL で新しいプラグインを作成します。

Sparkl ウェルカム画面 キラキラ

プラグインに名前を付けて、ケトル エンドポイントを追加します。pentaho-solutions/system フォルダを見ると、プラグイン名の新しいフォルダがあります。それを開き、サブフォルダー内の ktr ファイルを見つけて、変換に置き換えます。


最後のステップは、新しいダッシュボードをプラグインに追加して編集することです。ここでデータソース タブに移動すると、名前に「エンドポイント」が含まれるデータソースに注目してください。コードでそれらにアクセスしますが、入力データだけでなく、そこからデータを読み取ることもできるように、それらがここにあることを知っておくとよいでしょう。

次のコードを使用して、JavaScript の新しいリソースを CDE レイアウトに追加します。

var myPluginName = {};
(function(myself) {
  myself.runEndpoint = function (pluginId, endpoint, opts) {

    if (!pluginId && !endpoint) {
      Dashboards.log('PluginId or endpointName not defined.');
      return false
    }

    var _opts = {
      success: function () {
        Dashboards.log(pluginId + ': ' + endpoint + ' ran successfully.')
      },
      error: function (){
        Dashboards.log(pluginId + ': error running ' + endpoint + '.')
      },
      params: {},
      systemParams: {},
      type: 'POST',
      dataType: 'json'
    }
    var opts = $.extend( {}, _opts, opts);
    var url = Dashboards.getWebAppPath() + '/plugin/' + pluginId + '/api/' + endpoint;
    function successHandler (json) {
      if (json && json.result == false) {
        opts.error.apply(this, arguments);
      } else {
        opts.success.apply( this, arguments );
      }
    }
    function errorHandler () {
      opts.error.apply(this, arguments);
    }

    if (endpoint != 'renderer/refresh' ) {
      var ajaxOpts = {
        url: url,
        async: true,
        type: opts.type,
        dataType: opts.dataType,
        success: successHandler,
        error: errorHandler,
        data: {}
      }
    } else {
      var ajaxOpts = {
        url: url,
        async: true,
        type: 'GET',
        dataType: opts.dataType,
        success: successHandler,
        error: errorHandler,
        data: {}
      }
    }
    _.each( opts.params , function ( value , key) {
      ajaxOpts.data['param' + key] = value;
    });

    _.each(opts.systemParams , function (value , key) {
      ajaxOpts.data[key] = value;
    });
    $.ajax(ajaxOpts)
  }
})(myPluginName); 

myPluginName は好きなように変更できますが、それにより、任意のボタンでパラメーターを送信するそのエンドポイントを呼び出すことができます。そのためには、そのコードを使用できます。

myPluginName.runEndpoint(
                    'myPluginName', // Plugin identifier.
                    'endpointName', // Put your endpoint name here!
                    {
                      params: {
                      'EXAMPLE_PARAMETER' : foo_bar
                      },
                      success: function() { Dashboards.fireChange('refresh', 1); alert('data sent'); },
                      error: function() { alert('Ops, something went wrong. Check the logs.'); }
                    })

bi-server ログを監視することで、実行を追跡できます。

ソースに関する詳細情報:

Diethard Steiner - ブログ
Francesco Corti - ブログ
この人たちをフォローしてください。

于 2016-01-12T13:32:11.617 に答える
0

それを行うことも、変換で定義されたパラメーターを受け取る CDA データ ソースを作成することもできます。

パラメータは、URL の通常の ¶mYOURPARAMNAME=x 構文を介して CDA に渡されます。

変換では、get variables ステップを使用してパラメーターを取得します。

私は何か見落としてますか?

于 2016-01-12T18:09:44.800 に答える