1
다음 테스트 데이터가 있습니다. 나는이 샘플 항목의 총 수를 좀하고 싶습니다돼지의 여러 필드에서 값의 수
A B C
M O
M M M
M M M
N O
P N
는 테스트 데이터 내가 동일한 작업을 수행 할 수있는 아래의 코드를
(12) 즉,하지만 난 잘못된 결과를 얻고있다.
수정하는 방법에 대한 도움이 도움이 될 것입니다.
test= LOAD 'testdata' USING PigStorage(',') as (A:chararray,B:chararray,C:chararray);
values = FOREACH test GENERATE A==''?'null':(A is null?'null':A)) as A,(B==''?'null':(B is null?'null':B)) as B,(C==''?'null':(C is null?'null':C)) as C;
grp = GROUP values ALL;
counting = FOREACH grp GENERATE group, COUNT(values.A)+COUNT(values.B)+COUNT(values.C);
이것은 12가 아니라 15로 답을줍니다.
M = 7, N = 2, O = 2, P = 1과 같은 각 값의 수를 얻고 싶습니다. 아래 코드를 작성했습니다.
test= LOAD 'testdata' USING PigStorage(',') as (A:chararray,B:chararray,C:chararray);
values = FOREACH test GENERATE A==''?'null':(A is null?'null':A)) as A,(B==''?'null':(B is null?'null':B)) as B,(C==''?'null':(C is null?'null':C)) as C;
grp = GROUP values ALL;
A = FOREACH grp {
B =FILTER test.A=='M' OR test.B=='M' OR test.C=='M';
GENERATE group, COUNT(B);
};
"출력에 스칼라에 둘 이상의 행이 있습니다."라는 오류가 나타납니다.
여기에 rank_test 란 무엇입니까? –
대답은 기본적으로 빈 필드를 무시하여 데이터 세트에있는 필드 수를 제공해야하는데, 이는 12입니다. –
rank는 relation.rank_test의 레코드에 대한 행 번호를 지정합니다. 이는 행 번호가있는 새 열입니다. 이렇게하면 열 머리글을 제거하여 rank_test> 1을 사용하여 첫 번째 행 A, B, C를 제거 할 수 있습니다. 스크립트는 당신이 얻은 것을 봅니다. 그것은 12를 주어야합니다. –