给定输入:
PAYLOAD|ROWNUM|TYPE
1234 | 1|user
aaa | 2|data
bbb | 3|data
ccc | 4|data
5678 | 5|user
ddd | 6|data
aaa | 7|data
结果如下:
USER|DATA
1234|aaa
1234|bbb
1234|ccc
5678|ddd
5678|aaa
我已经尝试将值放入外部作业中定义的(全局)变量中,但无济于事。 “USER”字段中的值将在文件中多次更改。
我试过的代码使用了一个MJSV步骤
var varNameUserId = "var.user_id";
if(TYPE == "user") {
setVariable(varNameUserId, PAYLOAD, "r");
}
在另一个MJSV步骤中
var varNameUserId = "var.user_id";
var varUserId = getVariable(varNameUserId, "xxx");
var USER = varUserId;
最后,“文本输出”步骤将所有内容写入文件。
任何提示/想法/建议?
答案 0 :(得分:1)
(使用Kettle 5.0.1测试)
我遗漏了ROWNUMBER,因为它与你的问题无关。
不要忘记在转换设置中注册名为“currUser”的参数。
最后一步还删除了列TYPE。
JS步骤的代码:
if(TYPE == "data") {
USER = getVariable("currUser",0);
} else {
USER = PAYLOAD;
setVariable("currUser",PAYLOAD,"p");
}
JS步骤的设置:
从数据网格内容到执行结果: