kettle关于动态参数循环的方法 最后更新时间:2024年01月29日 ### 前言 kettle的转换本身是不支持循环处理的,需要结合作业功能和变量来实现循环传参。 ![创建一个主作业](https://yidaimingjvn.xyz/usr/uploads/2024/01/1062977928.png) 图中工程,通过校验值的方法以达到循环的作用。 ### 示例流程 1. 初始化变量 初始化变量的目的是为了后面更清晰地调用变量。 ![初始化变量](https://yidaimingjvn.xyz/usr/uploads/2024/01/3876810164.png) 2. 获取token 通过一个转换,读取表或文件的方式获取参数,发起rest请求,来获取所有的token。 ![获取token](https://yidaimingjvn.xyz/usr/uploads/2024/01/3628359388.png) 3. 获取记录条数等信息 获取上一个转换任务所返回出来的记录,通过JavaScript获取记录的一些元信息,并作为后面循环用的条件。 ```javascript var prevRow=previous_result.getRows();//获取上一个传递的结果 if (prevRow == null &&(prevRow.size()=0)) { false; }else{ parent_job.setVariable("tables", prevRow);//ArrayList存储表名变量,以数组形式保存入table1,table2 parent_job.setVariable("size", prevRow.size());//存储执行表的总数量 parent_job.setVariable("i", 0);//循环控制变量 parent_job.setVariable("token", prevRow.get(0).getString("token", "")); true; } ``` ![获取记录条数等信息](https://yidaimingjvn.xyz/usr/uploads/2024/01/2397532454.png) 4. 检验变量是否满足条件 检验变量是否满足条件,如果满足就循环,不满足就结束任务 ![检验变量是否满足条件](https://yidaimingjvn.xyz/usr/uploads/2024/01/3418584903.png) 5. 获取当前list下的值并进入下一个处理 通过JavaScript将当前i变量为下标指向的记录取出,并设置入变量,然后交给下一个任务组处理。 ```javascript var prevRow=previous_result.getRows(); var size = new Number(parent_job.getVariable("size")); var i = new Number(parent_job.getVariable("i"))+1; if(i
Comments | NOTHING