You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在Pentaho Data Integration中过滤错误整数数据并分流至日志?

解决Kettle文本数据整数校验与分流方案

核心思路

先以字符串全量读取数据,避免读取阶段因类型转换失败中断流程,再通过正则校验筛选有效数据,最后分流处理有效/无效数据。

具体步骤

  1. Text File Input 读取配置

    • 选择input.txt文件,分隔符设置为制表符(Tab),确保两列数据正确识别。
    • 把两列的元数据类型都设为String,不要提前设为Integer,避免读取带/的行时直接报错。
  2. Regex Evaluator 验证整数有效性

    • 添加Regex Evaluator步骤,配置:
      • 要校验的字段:选择第二列(比如字段名设为col2)
      • 正则表达式:^\\d+$(匹配纯数字字符串,无任何非数字字符)
      • 目标字段名:is_valid,类型设为Boolean
    • 这个步骤会给每行数据添加一个标记:有效行的is_valid为True,含/的无效行为False。
  3. Filter Rows 分流数据

    • 添加Filter Rows步骤,设置条件:is_valid = True
    • 满足条件的分支(有效数据):
      • 用Select Values或Convert Fields步骤,把第二列的类型从String转换为Integer,之后连接数据库输出步骤写入目标库。
    • 不满足条件的分支(无效数据):
      • 用Text File Output步骤,把整行数据(或包含错误信息的字段)写入日志文件;如果是要写入系统日志,也可以用Write to Log步骤。

为什么之前的方法失败?

如果一开始就在Text File Input里把第二列设为Integer,Kettle在读取阶段遇到带/的字符串时,会直接抛出String : couldn't convert String to Integer错误并中断流程,根本到不了后续的Filter或Validator步骤。必须先以字符串读取,再做校验和转换,才能实现错误数据的分流处理。

内容的提问来源于stack exchange,提问作者wolfderby

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.14 07:55:18