2012-06-07 2 views
1

데이터에 Null 항목이 많습니다. 나중의 처리로 인해 null에 대한 기본값을 "other"문자열로 설정할 수 있다면 매우 유용 할 것입니다. 나는 잠재적으로 null을 반환 할 수 있습니다 내 GENERATE 문에 일부 변수를 가지고, 또한Apache Pig : null을 문자열로 바꿉니다.

를이 (버전 0.8.1-cdh3u4을) 할 수있는 방법을 찾을 수 없습니다, 나는에 SQL 디코드 기능과 유사한 무언가를 필요 null 대신에 "other"문자열을 얻는다.

예 : 여기

tmp = FOREACH dump GENERATE site, REGEX_EXTRACT(name, '^(?:([^.]+)\\.?){1}', 1) AS project, ((ami MATCHES '.*datatype.*') ? REGEX_EXTRACT(name, '^(?:([^.]+)\\.?){5}', 1) : 'other') AS datatype, ami, duid, nbfiles, length, rnbfiles, rlength, name; 

: '사이트'와 '데이터 유형'(유효) 및 널 (null)로 해석됩니다 빈 문자열을 반환 할 수 있지만 반드시 "다른"대신한다.

고마워요.

+0

나는 이것 역시 원했습니다. 나는 돼지 0.9.2 + piggybank에서 UDF를 쓰지 않고서는 가능하지 않다고 생각한다. – Nick

답변

1

그래서 찾을 수있는 유일한 것은? : 삼항 연산자입니다. 이것은 전체 돼지 스크립트를 좀 더 장황하게 만들지 만 잘 작동합니다 :-)

(((ami MATCHES '.datatype.') ? REGEX_EXTRACT(name, '^(?:([^.]+)\.?){5}', 1) : 'other') IS NULL ? 'other' : ((ami MATCHES '.datatype.') ? REGEX_EXTRACT(name, '^(?:([^.]+)\.?){5}', 1) : 'other')) AS datatype 
+0

안녕하세요, 이것은 정수 필드에서도 작동합니까? 정수 필드가있는 "IS NULL"명령을 올바르게 만들 수 없습니까? – Learner

관련 문제