반응형
아래와 같은 데이터에서 선생님별 학생리스트가 아닌 1-1 matching된 multi row로 만들 때 보통 lateral view explode()를 사용한다. 하지만 주의할게 explode() udf는 아래와 같이 array형태나 mpa as a parameter형태만 지원한다.
teacher | student_id_list |
teacher1 | [1,2,3] |
table : class
$ SELECT teacher, id from class LATERAL VIEW explode(student_id_list) ids AS id where adid='teacher1';
위처럼 lateral view explode 을 실행하면 아래처럼 muliti row 형태로 변환된다.
teacher | student_id_list |
teacher1 | 1 |
teacher1 | 2 |
teacher1 | 3 |
하지만 student_id_list가 String 형태로 되어있다면?
teacher | student_id_list |
teacher1 | 1,2,3 |
위에서 언급한 것 처럼 explode()는 array형태나 map as a parameter형태의 데이터에만 지원되기 때문에 다음과 같이 처리해준다.
$ SELECT teacher, id from class LATERAL VIEW explode(student_id_list, ',') ids AS id where adid='teacher1';
이렇게 해주면 explode를 String format에서도 사용할 수 있다.
결과는 동일하다.
반응형
'Bigdata > QueryEngine' 카테고리의 다른 글
[ Impala ] Cloudera Impala Memory limit exceeded (0) | 2020.11.19 |
---|---|
Impala에서 빠르게 대략적인 모수를 추정하고 싶은 경우(ndv function) (0) | 2020.08.07 |
[ Impala ] Impala에서 drop table시 location지정된 hdfs파일 함께 지우기 (0) | 2020.04.20 |
hive, impala에서 특정 데이터포맷으로 날짜 가져오기 (0) | 2019.04.12 |
Hive external table drop시키기 (하둡 데이터도 삭제) (0) | 2019.03.26 |