Hive復雜數組字典(Json-Array)解析


數據存儲字段格式如下(Json-Array互相嵌套):
string='{"id":"9088848902695992720","title":"猛獁電動(共和新路旗艦店)","address":"上海市靜安區共和新路492號","category":"購物:自行車專賣","type":0,"location":{"lat":31.251923,"lng":121.463251},"adcode":"310106","province":"上海市","city":"上海市","district":"靜安區","fromSearch":1,"range":true,"name":"猛獁電動(共和新路旗艦店)","tag":false,"price":false,"description":"上海市靜安區共和新路492號","area_id":"310106","business_name":"猛獁電動(共和新路旗艦店)","latitude":31.251923,"longitude":121.463251,"poi_name":"上海市 · 猛獁電動(共和新路旗艦店)","poi_id":"9088848902695992720","level":1,"selected":true,"rangeDistance":"2.0","citycode":"310000","extra_items":[{"id":"9088848902695992720","title":"猛獁電動(共和新路旗艦店)","address":"上海市靜安區共和新路492號","category":"購物:自行車專賣","type":0,"location":{"lat":31.251923,"lng":121.463251},"adcode":"310106","province":"上海市","city":"上海市","district":"靜安區","fromSearch":1,"range":true,"name":"猛獁電動(共和新路旗艦店)","tag":false,"price":false,"description":"上海市靜安區共和新路492號","area_id":"310106","business_name":"猛獁電動(共和新路旗艦店)","latitude":31.251923,"longitude":121.463251,"poi_name":"上海市 · 猛獁電動(共和新路旗艦店)","poi_id":"9088848902695992720","level":1,"selected":true,"rangeDistance":"2.0","citycode":"310000"},{"id":"1737914136852040362","title":"猛獁電動(中山南二路旗艦店)","address":"上海市徐匯區中山南二路861號","category":"購物:自行車專賣","type":0,"location":{"lat":31.184747101,"lng":121.450555437},"adcode":"310104","province":"上海市","city":"上海市","district":"徐匯區","fromSearch":1,"range":true,"name":"猛獁電動(中山南二路旗艦店)","tag":false,"price":false,"description":"上海市徐匯區中山南二路861號","area_id":"310104","business_name":"猛獁電動(中山南二路旗艦店)","latitude":31.184747,"longitude":121.450555,"poi_name":"上海市 · 猛獁電動(中山南二路旗艦店)","poi_id":"1737914136852040362","level":1,"selected":true,"rangeDistance":"2.0","citycode":"310000"},{"id":"2079399087608466027","title":"猛獁電動專賣店(共江路店)","address":"上海市寶山區共江路204號","category":"購物:自行車專賣","type":0,"location":{"lat":31.331000146,"lng":121.456731092},"adcode":"310113","province":"上海市","city":"上海市","district":"寶山區","fromSearch":1,"range":true,"name":"猛獁電動專賣店(共江路店)","tag":false,"price":false,"description":"上海市寶山區共江路204號","area_id":"310113","business_name":"猛獁電動專賣店(共江路店)","latitude":31.331,"longitude":121.456731,"poi_name":"上海市 · 猛獁電動專賣店(共江路店)","poi_id":"2079399087608466027","level":1,"selected":true,"rangeDistance":"2.0","citycode":"310000"}]}'


select poi_name_now 
    ,get_json_object(m, '$.poi_name') as poi_name
from (
    select get_json_object(string, '$.poi_name') as poi_name_now --當前門店
        ,get_json_object(string, '$.extra_items') as extra_it --所有門店
    from table
)
LATERAL view explode(split(regexp_replace(extra_it,'^\\[|]$',''), ',(?!")')) ext_it as m
group by poi_name_now,get_json_object(m, '$.poi_name')

最終展示結果:

參考鏈接:https://stackoverflow.com/questions/62512180/hive-explode-each-json-element-in-json-array-to-rows

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM