在Pentaho中处理期间更改字段值/变量

时间:2013-12-06 11:16:54

标签: pentaho kettle

给定输入:

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;

最后,“文本输出”步骤将所有内容写入文件。

任何提示/想法/建议?

1 个答案:

答案 0 :(得分:1)

(使用Kettle 5.0.1测试)

我遗漏了ROWNUMBER,因为它与你的问题无关。

不要忘记在转换设置中注册名为“currUser”的参数。

enter image description here

最后一步还删除了列TYPE。

JS步骤的

代码:

if(TYPE == "data") {
    USER = getVariable("currUser",0);
} else {
    USER = PAYLOAD;
    setVariable("currUser",PAYLOAD,"p");
}
JS步骤的

设置:

  • 字段名称:USER
  • 类型:字符串
  • 替换值:Y

从数据网格内容到执行结果:

enter image description here