2019년 5월 9일 목요일

Hive: Map 내부의 json format의 multidimensional array string 데이터 추출 하기

Hive Map 내부의 json format의 multidimensional array string 데이터 추출 하기

데이터 형식

{
    "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;

결과


댓글 없음:

댓글 쓰기

추천 게시물

python: SVD(Singular Value Decomposition)로 간단한 추천시스템 만들기( feat. surprise )

svd_example In [15]: # !pip install surprise In [21]: from...