2013-01-16 24 views
-1

在Talend DI 4.2.1中使用tScriptRule組件。對於所有條件,使用jexl表達式來評估日期模式結果爲false。從作業進行測試得到的片段是如:帶有TalendDate.isDate的JEXL

public class Script { 

static class Row { 

    public String EFFECTIVEDATE; 

    public String getEFFECTIVEDATE() { 
     return this.EFFECTIVEDATE; 
    } 
} 

public static void main(String[] args) { 
    Row row1 = new Row(); 
    row1.EFFECTIVEDATE = "10-01-2012"; 
    com.bekwam.tscriptrules.JexlRowEvaluator e_tScriptRules_2 = new com.bekwam.tscriptrules.JexlRowEvaluator(); 
    boolean ruleTest_tScriptRules_2_1 = e_tScriptRules_2 
    .evalTrue("'${TalendDate.isDate(row1.EFFECTIVEDATE, \"dd-mm-yyyy\")}' == true", "row1", row1); 
    System.out.println(ruleTest_tScriptRules_2_1); 
} 
} 

文庫/成分是從tScriptRules

回答

0

了Talend功能不被JEXL表達式處理器評價。 您只能在jexl表達式中使用字段(在您的輸入行中)。 正如你可以在生成的Java代碼中看到,傳遞給方法的唯一參數是該行及其所有領域

com.bekwam.talend.component.scriptrules.Result result_tScriptRules_1 = rulesBean_tScriptRules_1.process(row1, row2, row3, counter_tScriptRules_1);

  • ROW1:輸入行
  • 2行:過濾後的行
  • ROW3:拒絕行

,如果你想添加了Talend方法評估中可以修改tscriptrules-2.0.1.jar庫jexl表達式處理器。

相反,我會建議使用TMAP做這樣的數據質量檢查的

TMAP設計:http://imageshack.us/a/img842/879/talendtmap.jpg TMAP結果:http://imageshack.us/a/img541/5950/talendtmapresult.jpg