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),只关心实际数据。
我正在尝试在电子表格的 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),只关心实际数据。