Monday

Hive Query - NULL 처리 본문

빅데이터/Hive

Hive Query - NULL 처리

뉴비2 2021. 2. 22. 19:59

-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 순서대로 확인 후 발견 즉시 해당 값 반환

 

Comments