2016-04-27 55 views
0

我對Talend很新,想從給定文件讀取表達式,然後在tMap函數中執行它。Talend開放數據集成:從excel文件讀取表達式,然後在tMap中執行它們

的計算公式是存儲在一個單獨的Excel列如下:

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

我完成閱讀它作爲一個字符串全球地圖:

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

但我無法在tMap中執行表達式以獲得結果值。

我的工作是這樣的:

tFileInputExcel = ROW6 => tFlowToIerate => tPostgresqlInput = ROW7 => TMAP => tFileOutpuDelimited

你能告訴我如何從文件執行的表達和獲取導致雙重?

問候

西蒙

回答

0

我通常會做的是tFlowToIerate一個tJavaRow組件在那裏我會分配值到上下文變量,並在tPostgresqlInput直接從上下文中使用它們之前有

+0

聽起來不錯!我會稍後再檢查一下,並讓你保持警惕。 – 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(infix);這導致錯誤:javax.script.ScriptException:ReferenceError:「row7」未定義在任何想法? – Simon

+0

是的,當你點擊Talend時,你實際上是Meta編程。你在說要生成代碼。您在中綴中定義的是一些Java公式,您將傳遞給JavaScript進行解釋。您可以隨時在Talend中實施您自己的類和方法,以便能夠解釋您從文件中獲得的公式。 – user853710

相關問題