-1

在 Talend DI 4.2.1 中使用 tScriptRule 组件。使用 jexl 表达式评估日期模式的结果对于所有条件都为 false。从测试作业派生的代码段如下:

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

4

1 回答 1

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 : 输入行
  • row2 : 过滤的行
  • row3 : 被拒绝的行

如果您想在 jexl 表达式处理器中添加 Talend 方法评估,您可以修改 tscriptrules-2.0.1.jar 库。

相反,我建议使用 tmap 进行这种数据质量检查

tMap 设计: http: //imageshack.us/a/img842/879/talendtmap.jpg tMap 结果:http: //imageshack.us/a/img541/5950/talendtmapresult.jpg

于 2013-01-17T21:44:39.577 回答