如何在Pentaho Data Integration作业中参数化选择执行单个或全部转换
实现Pentaho Data Integration作业的参数化转换执行控制
我刚好在PDI里实现过一模一样的需求,给你拆解下具体的操作步骤,完美匹配你要的逻辑——根据传入参数决定是跑单个指定转换还是全部转换:
1. 定义作业参数
首先给你的作业添加一个控制参数:
- 打开PDI作业,点击顶部菜单栏的「编辑」→「作业参数」
- 添加一个参数,比如命名为
TRANSFORMATION_NAME,设置默认值为ALL(这个就是你说的“触发全部执行的标识”,你也可以改成RUN_ALL这类自己好记的) - 这个参数的作用就是接收外部传入的转换名称,或者触发全量执行的标识
2. 给每个转换组件设置执行条件
作业里的每一个「转换」任务,都需要配置执行条件来判断是否要运行它:
- 右键点击你要设置的转换组件,选择「设置执行条件」
- 在弹出的窗口里,选择「JavaScript条件」,然后输入判断逻辑:
// 获取传入的参数值 var targetTrans = getJobParameter("TRANSFORMATION_NAME"); // 如果参数是全量标识,或者参数等于当前转换的名称,就执行这个转换 return targetTrans === "ALL" || targetTrans === "这里替换成你的转换名称";
- 注意:每个转换都要单独设置这个条件,把代码里的转换名称换成对应组件的实际名称就行
3. 测试运行
现在就可以测试效果了:
- 点击作业的「运行」按钮,在「运行配置」里切换到「参数」标签
- 如果想运行全部转换,就把
TRANSFORMATION_NAME的值设为ALL(或者你自定义的全量标识) - 如果只想运行某个特定转换,比如
用户数据同步转换,就把参数值设为这个转换的名称
额外小提示
- 参数名称要保持一致,别在不同转换的条件里打错参数名
- 后续如果新增转换,别忘了给它加上同样的执行条件逻辑
- 要是担心参数输入错误,还可以给参数设置可选值(在作业参数编辑里的「可选值」栏添加所有转换名称和全量标识),这样运行时只能选择合法的参数值
内容的提问来源于stack exchange,提问作者Arpan Saini
相关产品推荐
相关产品推荐

