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

如何在Pentaho Text File Input中合并拆分的文本记录?

如何在Pentaho中合并两行记录为单行?

我有以下格式的文本文件:

1  23/08/17  01:29:41 40    0210    6019004522702859          10,000,000.00                 0.00   7000   0000JH     005771
   APP  00    00    006716   30    S1G9986387         123-6521071921                                      BEKASI       
       2  23/08/17  03:38:33 40    0210    6019004521299402           3,300,000.00                 0.00   7000   0000VG     011250
   APP  00    00    280110   30    S1ACMB9503         123-8225022594                                                   
       3  23/08/17  04:45:00 40    0210    6019004508194352           5,000,000.00                 0.00   7000   000117     014015
   APP  00    00    282177   30    S1ACMB9503         123-7025047324                                                   
       4  23/08/17  05:02:00 40    0210    6019004521299402             700,000.00                 0.00   7000   00014D     015036
   APP  00    00    282944   30    S1ACMB9503         123-8225022594                                                   
       5  23/08/17  06:03:30 40    0210    6019004521269470           3,670,000.00                 0.00   7000   0001RT     024220
   APP  00    00    289871   30    S1ACMB9503         123-1122501295                                                   
       6  23/08/17  06:08:26 40    0210    6019002662198912           1,000,000.00                 0.00   7000   0001UR     025341
   APP  00    00    290705   30    S1ACMB9503         123-1152511520                                                   
       7  23/08/17  06:27:51 40    0210    6019002674210655          15,000,000.00                 0.00   7000   00029J     030585
   APP  00    00    294279   30    S1ACMB9503         123-1132116951                                                   
       8  23/08/17  06:38:59 40    0210    6019002666264330             900,000.00                 0.00   7000   0002LA     001833
   APP  00    00    296752   30    S1ACMB9503         123-1121109898                                                   
       9  23/08/17  06:54:58 40    0210    6019004009652312             200,000.00                 0.00   7000   00039O     008300
   APP  00    00    000597   30    S1G997Z73P         123-1025591061                                      PONTIANAK    
      10  23/08/17  07:01:29 40    0210    6019004521630044             875,000.00                 0.00   7000   0003KZ     011350

我尝试用Pentaho的Text File Input组件读取,但结果不符合预期,想要把每两行组成的记录合并成单行,示例如下:

1  23/08/17  01:29:41 40    0210    6019004522702859          10,000,000.00                 0.00   7000   0000JH     005771 APP  00    00    006716   30    S1G9986387         123-6521071921                                      BEKASI       
2  23/08/17  03:38:33 40    0210    6019004521299402           3,300,000.00                 0.00   7000   0000VG     011250 APP  00    00    280110   30    S1ACMB9503         123-8225022594

解决方案

方法一:直接修改Text File Input的行记录设置

这是最简单的方式,适合规则的两行一组的文件:

  • 打开Text File Input的配置界面,切换到Content标签页
  • 找到Number of lines per row选项,输入2
  • 保存配置后运行,组件会自动把每两行合并成一条记录,直接得到你要的格式

方法二:用脚本手动合并(应对不规则行情况)

如果文件存在偶尔的行异常,可以用自定义逻辑处理:

  1. 用Text File Input读取每一行,把每行内容存到一个字段(比如命名为raw_line)
  2. 添加Modified Java Script Value组件,定义两个变量:odd_line(存奇数行内容)、is_odd(标记当前行是否为奇数行,初始值设为true)
  3. 编写脚本逻辑:
    if (is_odd) {
      odd_line = raw_line;
      is_odd = false;
      // 奇数行不输出,暂存内容
      skipRow();
    } else {
      merged_line = odd_line + " " + raw_line.trim();
      is_odd = true;
      // 偶数行和暂存的奇数行拼接后输出
    }
    
  4. 后续可以根据需求拆分merged_line为具体字段

方法三:用关联组件合并

适合需要更灵活控制的场景:

  1. 用Text File Input读取所有行,添加一个自增的序列字段(比如row_num,可以用Add Sequence组件实现)
  2. 用Filter Rows组件拆分出奇数行(条件:row_num % 2 == 1)和偶数行(条件:row_num % 2 == 0)
  3. 对偶数行的row_num做减法:row_num = row_num - 1,让奇数行和对应偶数行的row_num一致
  4. 使用**Combine Rows (cartesian)**组件,通过row_num关联两行,把两行内容拼接成单行

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.14 20:17:02