Pentaho Data Integration:填充StoreName字段空值为前值
在Pentaho 9.0中填充StoreName字段空值为上一个非空值
Replace in String步骤无法实现这个需求——它仅针对单条记录的字符串内容做替换,不具备上下文(上一行数据)处理能力。你可以通过以下两种步骤实现需求:
方法一:Modified Java Script Value步骤
- 向转换中添加Modified Java Script Value步骤,连接到你的数据源输出。
- 在脚本编辑框中输入以下代码,通过全局变量维护上一个有效的门店名称:
if (typeof prevStoreName === 'undefined') { var prevStoreName = ''; } if (StoreName && StoreName !== '') { prevStoreName = StoreName; } else { StoreName = prevStoreName; } - 关键设置:进入转换的设置界面,取消勾选「Enable parallel execution」,确保行按原始顺序处理,避免并行导致的顺序错乱。
方法二:User Defined Java Expression步骤
- 添加User Defined Java Expression步骤到数据流中。
- 选择直接覆盖
StoreName字段,输入如下Java表达式:private static String lastValidStore = ""; if (StoreName == null || StoreName.isEmpty()) { return lastValidStore; } else { lastValidStore = StoreName; return StoreName; } - 同样需关闭转换的并行执行,保证行处理顺序正确。
注意事项
- 必须确保数据流的行顺序与Excel原始顺序一致,若之前有排序、分组等打乱顺序的步骤,需调整流程先保留原始顺序。
- 若数据流存在分支,全局变量会在分支间共享,可能导致填充错误,这种情况建议先完成空值填充再做分支处理。
内容的提问来源于stack exchange,提问作者cey
相关产品推荐
相关产品推荐

