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

使用Pentaho Spoon实现多值字段拆分与带权重的行插入需求

我来帮你一步步搞定这个Pentaho Spoon的数据处理任务,咱们分两个部分实现你要的两个结果表:

实现第一个结果表(ID、PERSON、PONDERACION)

这部分核心是拆分PERSON字段,再计算每个ID对应的权重:

  • 第一步:读取源数据
    用Table Input组件连接你的源数据库,写SQL语句拉取所有源表数据;如果源数据是文件的话,就用Text File Input组件读取,注意配置好字段分隔符。

  • 第二步:拆分PERSON为多行
    添加Split Fields to Rows组件,把它和前面的数据源连起来。在组件配置里:

    • 选择要拆分的字段:PERSON
    • 分隔符填,
      运行这一步后,原来的A,B就会拆成两行,每行保留对应的ID、TYPE、MATERIAL字段。
  • 第三步:统计每个ID的行数
    加一个Group By组件,分组字段选ID,然后添加一个聚合函数Count,给结果字段起名ROW_COUNT(这个值就是每个ID拆分后的总行数,比如ID=1拆分后是2行,ROW_COUNT就是2)。

  • 第四步:关联权重并计算PONDERACION
    用Merge Join组件,把拆分后的数据流(左边)和Group By得到的统计数据流(右边)关联起来,关联条件设为ID = ID。
    接着加Calculator组件,计算表达式写1 / ROW_COUNT,把结果字段命名为PONDERACION。如果需要像示例里那样用逗号做小数分隔符,后续可以加Format Number组件,设置格式为0,0或者0,00来调整显示格式。

  • 第五步:输出结果
    用Table Output组件,只选择ID、PERSON、PONDERACION这三个字段,写入你的目标表就搞定了。

实现第二个结果表(ID、TYPE、PONDERACION)

思路和第一个表几乎一致,只是拆分的字段换成TYPE:

  • 第一步:分支源数据流(或重新读取)
    如果你不想重复读取源数据,可以在最开始的数据源之后,用一个Hop分支出一条新的数据流;当然重新用Table Input读取也没问题。

  • 第二步:拆分TYPE为多行
    同样用Split Fields to Rows组件,这次选择拆分TYPE字段,分隔符还是,。比如ID=2的2444,1555会拆成两行,每行对应同一个ID。

  • 第三步:统计每个ID的行数
    加Group By组件,按ID分组,统计行数得到ROW_COUNT(比如ID=2拆分后是2行,ROW_COUNT=2)。

  • 第四步:计算权重
    用Merge Join关联拆分后的数据流和统计数据流,再用Calculator计算1 / ROW_COUNT得到PONDERACION,同样可以用Format Number调整小数分隔符。

  • 第五步:输出结果
    用Table Output组件,选择ID、TYPE、PONDERACION字段写入目标表。

一些小提示
  • 确保Group By组件的分组字段只有ID,这样统计的才是每个ID拆分后的总行数,权重计算才准确。
  • 如果你的Spoon默认小数分隔符是点,而示例需要逗号,记得用Format Number组件转换,避免格式不符。
  • 可以给每个组件加注释,方便后续维护哦!

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.28 07:13:26