Etl Talend:保存变量以供以后使用

Etl Talend:保存变量以供以后使用,etl,talend,Etl,Talend,我试图在电子表格的标题中保存一个值,以便以后用作新的列值 这是标题中带有值(XYZ)的简化版本: 标题中的值必须用于新列代码: 这是我的设计: tFilterRow_1用于拒绝A、B、C列中没有值的行。 tJavaRow_1中有一个设置全局变量的条件: if(String.valueOf(row1.col_a).equals("CODE:")){ globalMap.putIfAbsent("code", row1.col_b); } tMap_1中用于获取全局变量的Var表达式为:

我试图在电子表格的标题中保存一个值,以便以后用作新的列值

这是标题中带有值(XYZ)的简化版本:

标题中的值必须用于新列代码:

这是我的设计:

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|
缺少什么或有更好的方法来完成此escenario? 提前谢谢

简短回答: I tJavaRow在本例中使用输入_行或实际rowN row4

回答得越长,我会怎么做

我要做的就是让excel按原样流入。通过使用一些Java技巧,我们可以简单地跳过前几行,然后让流的其余部分通过。 因此,filter+tjavarow组合可以替换为tJavaFlex

tJavaFlex我会:

开始:

boolean contentFound = false;
主要

这样,您只需跳过前几条记录(即标题),而只关心实际数据。

我发现了我的(愚蠢的)错误,这些列组合在原始xlsx文件中,然后tFilterRow上的条件引用了错误的列。我刚刚测试了你的方法,效果很好,谢谢!。
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;
}