Monday
Hive Query - NULL 처리 본문
-AND Operator- NULL 값일 때 AND 결과
Expression | Value |
true AND NULL | NULL |
false AND NULL | false |
NULL AND NULL | NULL |
-OR Operator- NULL 값일 때 OR 결과
Expression | Value |
true OR NULL | true |
false OR NULL | NULL |
NULL OR NULL | NULL |
-NOT Operator-
Expression | Value |
NOT NULL | NULL |
※ 주의, 문자열 처리시 ""(empty string) ≠ NULL
NULL 처리에 유용한 특수 함수
1) If
if(조건, 값1, 값2) 처럼 사용하며 조건이 참일때 값1 반환, 거짓일 때 값2 반환
select if(money is NULL, 0, money) from account; # money가 null이면 0반환, 아니면 money
2) CASE
여러개의 조건을 처리할 때 사용. CASE WHEN 조건1 THEN 값1 WHEN 조건2 값2 ELSE 값3 END 처럼 사용
SELECT shop, game, price,
CASE WHEN price IS NULL THEN
'가격 미정'
WHEN price > 10 THEN
'비쌈'
ELSE '저렴'
END AS new_price
FROM fun.inventory;
3) NULLIF
NULLIF(값1, 값2) 처럼 사용. 2개의 조건이 같다면 NULL 반환, 다르면 첫 번째 인자 반환. 특수한 경우에 유용하게 사용됩니다. ex) 0으로 나누면 안될 떄
select distance / nullif(time, 0) as speed from flights;
4) IFNULL
IFNULL(값1, 값2) 처럼 사용. 첫 번째 값(값1)이 NULL이면 값2 반환, 아니면 값1 반환
select IFNULL(price, 100) from fun.inventory; # price가 null이면 100 반환
5) Coalesce
Coalsece(값1, 값2, .... 값N) 처럼 사용. 여러 개의 값을 조건으로 넣을 수 있으며 순서대로 확인하며 NULL이 아닌 값이 나오는 순간 해당 값 반환. 모두 NULL 값인 경우 NULL 반환
select coalesce(a_val, b_val, c_val) as exist_val from money; # a_val, b_val, c_val 순서대로 확인 후 발견 즉시 해당 값 반환
'빅데이터 > Hive' 카테고리의 다른 글
beeline 변수 사용하기 (0) | 2021.02.22 |
---|---|
Hive&Impala Query 문자열 패턴 매칭 (0) | 2021.02.22 |
Hive Query비대화형(Non-interactive) 모드 - Beeline (0) | 2021.02.22 |
Comments