遇到这样一个问题:从EXCEL中读取数据,其中A谱驸扌溺列数据,其中包含一些为空的字段,想要将A这列数据进行处理,处理之后的原来为空数据的被上一条有值得数据替换,得到如下效果:AA列为原始数据,A为处理后的数据。A AA1 11 112 21 113 34 445 5
工具/原料
kettle4.3版本以上
问题分析
1、上述问题就是解决在某种条件下将输入处理的数据内进行处理,将输入的某一条数据的值处理后处理给另一条数据。我们可在这个值传递过程中设置一个全局变量,临时将数据的值存在里面(输入的值为非空时),当满足某个条件(读入的数据为空)时将变量的值赋给这个数据。
问题解决思路
1、针对上述问题,解决思路是,创建一个变量X,当A不为空时,读取数据时每次都将A列的值赋给X,将A的值赋给AA;当遇到A列数据为空时,将变量X中的值赋给AA。
创建kettle模型
1、使用Excel输入将Excel表数据读入进来。kettle作为一个数据加载、转换和清洗工具,支持在其中引入javascript脚本,我们可以在javascript中完成值到变量及变量到值得变换。最后使用Excel输入将处理结果输出即可。构建的模型如下:
2、javascript中蜣贺鱿柢代码分析:var AA; //定义新增的输出字段,处理后的A字段的值都存在AA字段中if (A==null){AA=getVariable(&qu泠贾高框ot;X",""); //判断如果A字段的值为空,则将变量X的值赋给AA}else{ setVariable("X",A,"r"); //如果A字段值不为空,则将A字段的值赋给变量X AA=A; //Ab不为空时还需要将A字段的值赋给AA}