2016-04-27 14 views
0

Talendが新しく、与えられたファイルから式を読み込み、tMap関数で実行したいと考えています。Talend Open Data Integration:Excelファイルから式を読み込み、tMapで式を実行します。

式は次のように別のExcelの列に格納されている:

((String) globalMap.get("row6.column_that_contains_expr"))

row7.value1 + row7.value2 == 0 ? 0 : row7.value1/(row7.value1 + row7.value2) 

Iグローバルマップで文字列としてそれを読むためになさ。

しかし、結果の値を取得するためにtMapで式を実行できません。

私の仕事は、次のようになります。

tFileInputExcel = row6 => tFlowToIerate => tPostgresqlInput = row7 => TMAP =>あなたはどのようにファイルからの発現を実行する方法を教えして入手してくださいでした

をtFileOutpuDelimitedその結果二倍?

挨拶

サイモン私は何普通でしょうが、私はコンテキスト変数に値を代入して、コンテキストから直接tPostgresqlInputでそれらを使用することになりtFlowToIerate tJavaRowコンポーネントの前に持っていることです

答えて

0

+0

いいですね!私は後でそれをチェックし、あなたにpostetを約束します。 – Simon

+0

私はtJavaRowで以下を試しました:ScriptEngineManager mgr = new ScriptEngineManager(); ScriptEngine engine = mgr.getEngineByName( "JavaScript"); String infix = "row7.value1 + row7.value2 == 0?0:row7.value1 /(row7.value1 + row7.value2)"; context.test = engine.eval(インフィックス);これはエラーにつながります:javax.script.ScriptException:ReferenceError: "row7"はに定義されていません。 – Simon

+0

はい、Talendをクリックすると、実際にメタプログラミングされています。あなたはコードを生成するための才能を言う。インフィックスで定義するものは、JavaScriptに渡されて解釈されるいくつかのJava式です。 Talendでは、ファイルから取得する式を解釈できる独自のクラスとメソッドをいつでも実装できます。 – user853710