데이터 형식
{
"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;
결과

댓글 없음:
댓글 쓰기