Talend:保存变量供以后使用

Talend: Save variable for later use

我正在尝试在电子表格的 header 中保存一个值以供以后用作新列值。

这是在 header 中具有值 (XYZ) 的缩小版本:

header 中的值必须用于新列 CODE:

这是我的设计:

tFilterRow_1用于拒绝A、B、C列中没有值的行。 tJavaRow_1中有条件设置全局变量:

if(String.valueOf(row1.col_a).equals("CODE:")){
  globalMap.putIfAbsent("code", row1.col_b);
}

tMap_1中获取全局变量的Var表达式为:

(String)globalMap.get("code")  

Var "code" 映射到列 "code" 但我得到以下输出:

a1|b1|c1|
a2|b2|c2|
a3|b3|c3|

遗漏了什么或者有更好的方法来完成这个场景? 提前致谢。

简答: 我 tJavaRow 使用 input_row 或实际的 rowN 在这种情况下 row4.

更长的答案,我会怎么做。

我会做的是让 excel 流入 AS-IS。通过使用一些 Java 技巧,我们可以简单地跳过前几行,然后让其余的流程通过。 所以 filter + tjavarow 组合可以替换为 tJavaFlex.

tJavaFlex 我会做:

开始:

boolean contentFound = false;

主要

if(input_row.col1 != null && input_row.col1.equalsIgnoreCase("Code:") ) {
   globalMap.put("code",input_row.col2);
}
if(input_row.col1 != null && input_row.col1.equalsIgnoreCase("Column A:") ) {
   contentFound = true;
} else {
   if(false == contentFound) continue;
}

这样您就可以简单地跳过前几条记录(即 header),只关心实际数据。