Pentaho Data Integration:在Text File Output末尾添加答案总和求助
在Pentaho Data Integration中给Text File Output添加总和行的解决方案
嘿,我刚好之前处理过一模一样的需求,给你两个用PDI原生组件就能搞定的方案,不用额外工具:
方案一:合并数据流(推荐,更简洁)
这个方案通过合并原数据和总和行的数据流,一次性输出到文件:
- 第一步:保留你现有的「Table Input」组件,从它再拉出一条新的分支到「Group by」组件。
- 第二步:配置「Group by」组件:
- 不需要设置任何分组字段,直接添加一个聚合表达式:
SUM(Answers),给结果字段起别名比如Total_Answers。
- 不需要设置任何分组字段,直接添加一个聚合表达式:
- 第三步:添加「Add Constants」组件到「Group by」的输出端:
- 新增一个字段
Name,类型选字符串,值设为TOTAL; - 再把
Total_Answers字段重命名为Answers(必须和原数据的列名完全一致)。
- 新增一个字段
- 第四步:添加「Append Streams」组件,把原数据的流(从「Table Input」过来的那条)和总和行的流(从「Add Constants」过来的那条)合并。注意要确保两个流的列名、数据类型完全匹配,PDI会自动匹配列名,要是有不匹配的可以手动调整映射。
- 第五步:把「Append Streams」的输出连接到你的「Text File Output」组件,正常配置输出格式即可。这样生成的文件就会包含所有原数据行,末尾紧跟
TOTAL, 18这样的总和行。
方案二:分两次输出到同一个文件(适合复杂场景)
如果你的数据流比较复杂,不想合并流,可以分两次写入文件:
- 第一部分:用第一个「Text File Output」输出原数据,配置时勾选「包含表头」,文件写入模式选择「覆盖」(确保每次运行都重新生成文件)。
- 第二部分:同样用「Group by」+「Add Constants」计算出
TOTAL行,然后连接到第二个「Text File Output」组件:- 设置和第一个组件完全相同的文件路径;
- 写入模式选择「追加」;
- 务必取消勾选「包含表头」,避免重复写入表头。
- 运行转换时,PDI会先写入原数据,再把总和行追加到文件末尾。
注意事项
- 确保总和行的
Answers字段数据类型和原数据的Answers完全一致(比如都是整数型),不然合并或追加时可能会出现数据格式错误。 - 如果你的原数据有排序需求,记得在合并流之前给原数据加「Sort Rows」组件,避免总和行插在中间。
内容的提问来源于stack exchange,提问作者Dierre
相关产品推荐
相关产品推荐

