2017-04-21 4 views
0

이 코드가 있습니다.돼지로 거대한 필터 만들기

large = load 'a super large file' 

CC = FILTER large BY $19 == 'abc OR $20 == 'abc' 
OR $19 == 'def' or $20 == 'def' ....; 

OR 조건의 수는 최대 100 또는 심지어 수천까지 올 수 있습니다.

더 좋은 방법이 있나요?

답변

2

예, 다른 파일에 이러한 조건을 넣으십시오. 관계에로드하고 열에 두 관계를 조인하십시오. 여러 열을 필터링해야한다면 조건과 동일한 수의 필터 파일을 만들어야합니다. 2 열

large = load 'a super large file' 
filter1 = load 'file with values needed to compare with $19'; 
filter2 = load 'file with values needed to compare with $20'; 
f1 = JOIN large BY $19,filter1 BY $0; 
f2 = JOIN large BY $20,filter2 BY $0; 
final = UNION f1,f2; 
DUMP final; 

아마도 여러 개의 열이있는 필터 파일을 하나씩 사용할 수 있습니다. 다른 필터 결과를 얻고 관계를 결합하기 만하면됩니다.

large = load 'a super large file' 
filter_file = load 'file with values in different columns'; 

f1 = JOIN large BY $19,filter_file BY $0; 
f2 = JOIN large BY $20,filter_file BY $1; 
final = UNION f1,f2; 
DUMP final;