复杂格式数据处理

 1 SELECT
 2     code,
 3     name,
 4     ai.ACode,
 5     ai.AName,
 6     bi.BCode,
 7     bi.BName
 8 FROM (SELECT
 9             get_json_object(t.value, '$.base.code') AS code,
10             get_json_object(t.value, '$.base.name') AS name,
11             get_json_object(t.value, '$.list') AS list
12         FROM
13             (
14                 SELECT
15                     '{"base":{"code":"xm","name":"project"},"list":[{"ACode":"cp1","AName":"Product1","BList":[{"BCode":"gn1","BName":"Feature1"},{"BCode":"gn2","BName":"Feature2"}]},{"ACode":"cp2","AName":"Product2","BList":[{"BCode":"gn1","BName":"Feature1"}]}]}' AS value
16             ) t 
17     ) t1 
18     lateral VIEW explode(split(regexp_replace(regexp_extract(list, '^\\[(.+)\\]$', 1), '\\}\\]\\}\\,\\{', '\\}\\]\\}\\|\\|\\{'), '\\|\\|')) list AS a lateral VIEW json_tuple(a, 'ACode', 'AName', 'BList') ai AS ACode,
19     AName,
20     BList lateral VIEW explode(split(regexp_replace(regexp_extract(BList, '^\\[(.+)\\]$', 1), '\\}\\,\\{', '\\}\\|\\|\\{'), '\\|\\|')) BList AS b lateral VIEW json_tuple(b, 'BCode', 'BName') bi AS BCode,
21     BName ;

 

posted on 2022-09-04 20:52  大鹏的鸿鹄之志  阅读(25)  评论(0编辑  收藏  举报