Pentaho Xlsx Input字符串转数字报错及解决需求
解决Pentaho Xlsx Input转数字报错的方案
问题根源
报错Unexpected conversion error while converting value [v String] to a Number是因为目标列存在混合格式:大部分行是纯数值,第245行是带USD 前缀的字符串,直接转数字会触发格式不兼容错误。
分步解决方法
1. 先以字符串类型读取目标列
在Xlsx Input步骤的字段配置中,将目标列的数据类型设置为String,避免提前触发转换报错。
2. 清理字符串中的前缀
推荐两种预处理方式:
方式A:用Replace in String步骤快速清理固定前缀
- 添加
Replace in String步骤到Xlsx Input之后 - 配置项:
- 目标字段:选择需要处理的列
- 要替换的内容:
^USD(正则表达式,精准匹配开头的USD) - 替换为:留空
- 勾选「正则表达式」选项
- 执行后,所有带
USD前缀的内容会被清理为纯数字字符串
方式B:用Calculator步骤处理可变前缀
如果后续可能出现其他类似字母前缀,用正则提取更通用:
- 添加
Calculator步骤 - 新建输出字段(例如
cleaned_amount) - 计算类型选「字符串运算」
- 公式输入:
REGEX_REPLACE([目标字段列名], "^[A-Za-z]+ ", "")- 该正则会匹配开头的任意字母组合+空格,替换为空,适配更多前缀场景
3. 转换为数字类型
完成字符串清理后,添加Select Values步骤:
- 切换到「元数据」标签页
- 找到清理后的字段,将其数据类型修改为
Number(根据实际需求选择整数或浮点数类型) - 确认配置后运行作业即可
验证建议
可以添加Filter Rows步骤,筛选出ISNUMERIC(cleaned_amount) = N的行,检查是否还有未清理干净的异常格式,确保转换前所有内容都是合法的数字字符串。
内容的提问来源于stack exchange,提问作者NiMa03
相关产品推荐
相关产品推荐

