[HADOOP] 빈 값 또는 NULL 값을 HIVE 쿼리 결과의 특정 값으로 바꿉니다.
HADOOP빈 값 또는 NULL 값을 HIVE 쿼리 결과의 특정 값으로 바꿉니다.
쿼리가 선택한 열 중 하나에 대한 결과를 반환하지 않을 때 "기타"기본값을 표시하려고합니다. 예제를 보여 드리겠습니다.
이 쿼리는 os (에이전트) SO에 대한 빈 값을 반환합니다 (첫 번째 행에 있음).
select country, os(agent) SO, count(*) from clicks_data
where country is not null and os(agent) is not null
group by country, os(agent);
산출:
ZA 4
ZA Android 4
ZA Mac 8
ZA Windows 5
대신, 나는이 결과를 얻고 싶다.
ZA Others 4
ZA Android 4
ZA Mac 8
ZA Windows 5
내 다음 시도는이 쿼리이지만 실제로 작동하지 않습니다.
select country, regexp_replace(os(agent),'','Others') SO, count(*) from clicks_data
where country is not null and os(agent) is not null
group by country, os(agent);
결과는 다음과 같습니다.
ZA Others 4
ZA OthersAOthersnOthersdOthersrOthersoOthersiOthersdOthers 4
ZA OthersMOthersaOtherscOthers 8
ZA OthersWOthersiOthersnOthersdOthersoOtherswOtherssOthers 5
해결법
-
==============================
1.LENGTH ()를 사용하여 열 값의 길이를 확인하십시오. > 0을 반환하고, 다른 값이 있으면 빈 값이나 NULL 값으로 0을 반환합니다.
LENGTH ()를 사용하여 열 값의 길이를 확인하십시오. > 0을 반환하고, 다른 값이 있으면 빈 값이나 NULL 값으로 0을 반환합니다.
또한 CASE WHEN ... END 블록의 열 값을 프레임화합니다.
최종 검색어는 다음과 같이 표시 될 수 있습니다.
SELECT country, CASE WHEN LENGTH(os(agent)) > 0 THEN os(agent) ELSE 'Others' END AS SO, COUNT(*) FROM clicks_data WHERE country IS NOT NULL AND os(agent) IS NOT NULL GROUP BY country, os(agent);
희망이 당신을 도와주세요!
-
==============================
2.COALESCE가 귀하의 케이스에 가장 적합하고 최적의 솔루션이 될 것입니다.
COALESCE가 귀하의 케이스에 가장 적합하고 최적의 솔루션이 될 것입니다.
통사론: COALESCE (VALUE, DEFAULT_VALUE) : 값이 null 일 때 함수가 기본값을 반환합니다. 그렇지 않으면 VALUE;
질문
SELECT country, COALESCE(os(agent),'Others') AS SO, COUNT(*) FROM clicks_data WHERE country IS NOT NULL AND os(agent) IS NOT NULL GROUP BY country, os(agent);
희망이 당신의 문제에 대한 효율적인 솔루션이 될 것입니다.
from https://stackoverflow.com/questions/30285169/replace-the-empty-or-null-value-with-specific-value-in-hive-query-result by cc-by-sa and MIT license
'HADOOP' 카테고리의 다른 글
[HADOOP] Namenode-HDFS에 대한 "Connection refused"오류 (Hadoop 문제) (0) | 2019.07.26 |
---|---|
[HADOOP] MapReduce 출력 ArrayWritable (0) | 2019.07.26 |
[HADOOP] serde : org.openx.data.jsonserde.jsonserde의 유효성을 검사 할 수 없습니다. (0) | 2019.07.26 |
[HADOOP] MapReduce를 사용하여 숫자의 평균 찾기 (0) | 2019.07.26 |
[HADOOP] Maven이 내 코드를 -source 1.3으로 컴파일하려고하는 이유는 무엇입니까? (0) | 2019.07.26 |