2017-02-21 3 views
1

나는 돼지 구문을 처음 접했고 누군가이 SQL 코드를 돼지로 번역하는 힌트를 제공 할 수 있는지 궁금해하고 있었다.돼지에서 필터와 그룹을 사용하기

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에 대한 일치 함수를 여러 개 또는 모두 일치한다고 추측 할 수 없습니다. 명시 적 캐스트를 사용하십시오."

+0

샘플 입력과 예상 출력을 공유 할 수 있습니까? –

답변

0

SUM() : 단일 열 봉지의 숫자 값 합계를 계산합니다. 그것은 입력으로 가방을 기대하고 있습니다. 그래서, FOREACH ... GENERATE

result = foreach groupColumn Generate group, filterColumn.column1, SUM(filterColumn.column3) as sumCol3; 

는 또한 FILTER 성명에서, 아래 돼지 명령을 사용할 수 있습니다 ==

filterColumn = FILTER data BY column5 == 100; 
+0

SUM의 column3이 어디에서 왔는지 지정하는 것을 잊어 버렸습니다. SUM (filterColumn.column3) –

+0

@ a.m. 예 ..이 문제가 해결 되었다면 답을 받아 들일 수 있습니까? – franklinsijo

0

평등 사용을 확인하기 위해, 다음과 같습니다

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; 

참고 'PigStorage'및 'AS'의 사용은 선택 사항입니다.

희망이 도움이됩니다.