Arrays 如何根据ApacheHive中的键从json列表中提取json对象

Arrays 如何根据ApacheHive中的键从json列表中提取json对象,arrays,json,hive,hiveql,Arrays,Json,Hive,Hiveql,我需要根据id字段值从下面的json列表中提取json,并将键显示为列 [{"id":"123","name":"ABC","age":"18","subject":"Maths","score":20}, {"id":"124","name":"ABCD","age":"20","subject":"History","score":40}, {"id":"213","name":"XYZ","age":"28","subject":"Economics","score":35}] 我希望显

我需要根据id字段值从下面的json列表中提取json,并将键显示为列

[{"id":"123","name":"ABC","age":"18","subject":"Maths","score":20},
{"id":"124","name":"ABCD","age":"20","subject":"History","score":40},
{"id":"213","name":"XYZ","age":"28","subject":"Economics","score":35}]
我希望显示基于key:123的最终json,如下所示

id|name|age|subject|score
123|ABC|18|Maths|20

请建议在配置单元中实现上述内容的方法。

分解数组并使用get\u json\u对象提取json元素

# Header 1 #   
 Writing a function to get the index of the object by mapping it with the key

#Code#


let obj = [{"id":"123","name":"ABC","age":"18","subject":"Maths","score":20},{"id":"124","name":"ABCD","age":"20","subject":"History","score":40},{"id":"213","name":"XYZ","age":"28","subject":"Economics","score":35}]
    function getColoumn(_key){
        for(i in obj){
         if(obj[i].id ===_key){
            return obj[i];
            }
        }
    }
    getColoumn("123")
例如:

with your_data as (
     select stack(1, array(
     '{"id":"123","name":"ABC","age":"18","subject":"Maths","score":20}',
     '{"id":"124","name":"ABCD","age":"20","subject":"History","score":40}',
     '{"id":"213","name":"XYZ","age":"28","subject":"Economics","score":35}')
     ) as json_array
)

select --t.json_array as initial_data,
       --a.json, 
       get_json_object(a.json, '$.id')      id,
       get_json_object(a.json, '$.name')    name,
       get_json_object(a.json, '$.age')     age,
       get_json_object(a.json, '$.subject') subject,
       get_json_object(a.json, '$.score')   score    
  from your_data t 
       lateral view outer explode(json_array) a as json
  where get_json_object(a.json, '$.id') = 123  ;
结果:

id      name    age     subject score
123     ABC     18      Maths   20