如何在猪脚本中对单行中的字段进行总计?

Posted

技术标签:

【中文标题】如何在猪脚本中对单行中的字段进行总计?【英文标题】:how to total fields in single row in pig script? 【发布时间】:2017-08-10 12:01:32 【问题描述】:

我有一个包含学生姓名和逗号分隔的各种科目分数的数据集,我如何总结每个学生的分数 示例数据集记录

Student1 Marks1 Marks2 Marks3 Marks4
(Steve, 78, 23, 45, 34)
(Jobs, 23, 45, 12, 67)

脚本

Student_New = FOREACH Student_File generate Student_Name, (int)TotalMarks:SUM($1,$2,$3,$4,$5); 
Dump Student_New;

我想将输出显示为(总结所有主题分数)

(Steve, 180)
(Jobs, 147)

【问题讨论】:

显示您尝试过的代码。 Student_New = FOREACH Student_File 生成 Student_Name, (int)TotalMarks:SUM($1,$2,$3,$4,$5);转储 Student_New; 使用代码更新/编辑您的问题,不要只是将其放入评论中 【参考方案1】:

SUM 适用于列数据。使用“+”添加这些列。请注意,如果您已将 Marks1 到 Marks4 加载到 int 字段中,这将起作用。

Student_New = FOREACH Student_File generate Student_Name, ($1+$2+$3+$4) as Total_Marks; 
Dump Student_New; 

【讨论】:

以上是关于如何在猪脚本中对单行中的字段进行总计?的主要内容,如果未能解决你的问题,请参考以下文章

如何在 LINQ 中对单个连接中的多个字段进行连接

如何在 MySQL 中对行进行求和

如何在猪中加载由 :: 分隔的数据

如何在猪中读取json数据?

如何在脚本中将变量传递给总计

如何在 MDX 中对同一维度进行分组和过滤