ケトルを使用して pentaho cde から pentaho データ統合にパラメーターを渡し、渡されたパラメーターを PDI で使用してテーブルを更新するシナリオがあります。パラメータを渡し、渡されたパラメータを PDI で取得するにはどうすればよいですか?
前もって感謝します!!!
ケトルを使用して pentaho cde から pentaho データ統合にパラメーターを渡し、渡されたパラメーターを PDI で使用してテーブルを更新するシナリオがあります。パラメータを渡し、渡されたパラメータを PDI で取得するにはどうすればよいですか?
前もって感謝します!!!
Pentaho プラグイン ビルダー、SPARKL を使用する必要があります。
これにより、変換を呼び出し可能なエンドポイントとしてアップロードし、CDE ダッシュボードを使用して呼び出すことができます。
まず、パラメータを期待する変換が必要です。より高度な変換に進む前に、テストで試すことができます。
パラメータを定義し、Get Variables ステップでフェッチする
次に、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 - ブログ
この人たちをフォローしてください。
それを行うことも、変換で定義されたパラメーターを受け取る CDA データ ソースを作成することもできます。
パラメータは、URL の通常の ¶mYOURPARAMNAME=x 構文を介して CDA に渡されます。
変換では、get variables ステップを使用してパラメーターを取得します。
私は何か見落としてますか?