Sql 在清管器中使用过滤器和分组

Sql 在清管器中使用过滤器和分组,sql,apache-pig,Sql,Apache Pig,我不熟悉pig语法,想知道是否有人可以提供一个将此SQL代码翻译成pig的提示 SELECT column1, column2, SUM(column3) FROM table WHERE column5 = 100 GROUP BY column2; 到目前为止,我已经: data = LOAD....etc. filterColumn = FILTER data BY column5 = 100; groupColumn = Group filterColumn By column2; r

我不熟悉pig语法,想知道是否有人可以提供一个将此SQL代码翻译成pig的提示

SELECT column1, column2, SUM(column3)
FROM table
WHERE column5 = 100
GROUP BY column2;
到目前为止,我已经:

data = LOAD....etc.
filterColumn = FILTER data BY column5 = 100;
groupColumn = Group filterColumn By column2;
result = foreach groupColumn Generate group, column1, SUM(column3) as sumCol3; 
DUMP result; 
这是行不通的。错误消息是“无法推断org.apache.pig.builtin.SUM的匹配函数为多个或没有一个匹配。请使用显式转换。”

:计算单列包中数值的总和。它期望包作为它的输入。因此,
FOREACH。。。生成
将是

result = foreach groupColumn Generate group, filterColumn.column1, SUM(filterColumn.column3) as sumCol3; 
同样在
FILTER
语句中,要检查是否相等,请使用
=

filterColumn = FILTER data BY column5 == 100;
:计算单列包中数值的总和。它期望包作为它的输入。因此,
FOREACH。。。生成
将是

result = foreach groupColumn Generate group, filterColumn.column1, SUM(filterColumn.column3) as sumCol3; 
同样在
FILTER
语句中,要检查是否相等,请使用
=

filterColumn = FILTER data BY column5 == 100;

可使用以下清管器命令:

test=LOAD '<testdata>' USING PigStorage(',') AS (column1:<datatype>, column2:<datatype>,column3:<datatype>, column5:<datatype>);

A =FILTER test BY column5==100;

B = GROUP A BY column2;

C = FOREACH B GENERATE group, test.column1,test.column2,SUM(test.column3);

dump C;
test=使用PigStorage(',')作为(第1列:,第2列:,第3列:,第5列:)加载“”;
A=第5列的过滤测试==100;
B=A组,第2列;
C=每个B生成组,测试列1,测试列2,和(测试列3);
转储C;
请注意,“PigStorage”和“AS”的使用是可选的


希望这有帮助。

可以使用以下清管器命令:

test=LOAD '<testdata>' USING PigStorage(',') AS (column1:<datatype>, column2:<datatype>,column3:<datatype>, column5:<datatype>);

A =FILTER test BY column5==100;

B = GROUP A BY column2;

C = FOREACH B GENERATE group, test.column1,test.column2,SUM(test.column3);

dump C;
test=使用PigStorage(',')作为(第1列:,第2列:,第3列:,第5列:)加载“”;
A=第5列的过滤测试==100;
B=A组,第2列;
C=每个B生成组,测试列1,测试列2,和(测试列3);
转储C;
请注意,“PigStorage”和“AS”的使用是可选的


希望这有帮助。

您可以共享示例输入和预期输出吗?您可以共享示例输入和预期输出吗?我忘了指定总和中第3列的来源。上午时求和(filterColumn.Column.3)@a.m.是。。希望这个问题得到解决,你能接受答案吗!我忘了指定SUM中第3列的来源。上午时求和(filterColumn.Column.3)@a.m.是。。希望这个问题得到解决,你能接受答案吗!