name是变量,value 值也是变量
我需要把name作为变量名,value作为变量值;
在kettle中,使用javascript脚本
key与lastVsxzl都是变量
//Script here
setVariable(key,lastVsxzl,'r');var r=getVariable(key,'r');
Demo
1、从记事本里面获取机头号name
2、根据机头号从redis中获取相应的vsxzl值
3、name与vsxzl 成为一个变量,name是变量名,vsxzl是变量值
成功的截图如下
文本文件输入的截图
获取redis值的截图
import redis.clients.jedis.Jedis;public boolean processRow(StepMetaInterface smi, StepDataInterface sdi) throws KettleException {if (first) {first = false;}Object[] r = getRow();if (r == null) {setOutputDone();return false;}r = createOutputRow(r, data.outputRowMeta.size());//1、连接redisJedis jedis = new Jedis("10.20.1.17", 6379);//2、获取key值String name = get(Fields.In, "name").getString(r);boolean exists = jedis.exists(name);//2.1、获取上一次的机米长度String lastVsxzl = "0";if (!exists) {jedis.hset(name, "vsxzl", "0");} else {if (!jedis.hexists(name, "vsxzl")) {jedis.hset(name, "vsxzl", "0");}lastVsxzl = jedis.hget(name, "vsxzl");}//3、输出key值get(Fields.Out, "lastVsxzl").setValue(r, lastVsxzl);get(Fields.Out, "key").setValue(r, name+"vsxzl");// 关闭连接jedis.close();// Send the row on to the next step.putRow(data.outputRowMeta, r);return true;
}