데이터 형식
{ "name" : "Admin", "age" : 20, "click" : [ {"dt":"20190101","cnt":12}, {"dt":"20190102","cnt":21}, {"dt":"20190103","cnt":24}, {"dt":"20190104","cnt":25} ] }
위와 같은 데이터 형식의 map 컬럼 내부의 click 데이터가 multidimensional array로 건수가 유동적인 경우 각 데이터를 한 row씩 출력하고 하고자 할때 아래 방법을 사용
데이터 생성
쿼리
결과
select map('name','Admin','age',20,'click','[{"dt":"20190101","cnt":12},{"dt":"20190102","cnt":21},{"dt":"20190103","cnt":24},{"dt":"20190104","cnt":25}]') as mapcol
쿼리
select get_json_object(val_json,'$.dt') as dt , get_json_object(val_json,'$.cnt') as cnt from ( select map('name','Admin','age',20,'click','[{"dt":"20190101","cnt":12},{"dt":"20190102","cnt":21},{"dt":"20190103","cnt":24},{"dt":"20190104","cnt":25}]') as mapcol ) temp lateral view explode(split(regexp_replace(regexp_replace(mapcol['click'],'\\}\\,\\{','\\}\\#\\{'),'\\[|\\]',''), '\\#')) tbl_json as val_json;
결과
댓글 없음:
댓글 쓰기