美文网首页
hive中json_tuple遇上多条件判断问题解决

hive中json_tuple遇上多条件判断问题解决

作者: 星辰fml | 来源:发表于2019-04-18 14:42 被阅读0次

问题描述

在hive中json_tuple用于一次性从json字符串中提取多个字段,比get_json_object效率高,但如果遇到2条json中提取的字段名称不一致,就会遇到提取失败的情况,如下:

id,json_col
123|{"name":"张三","query_time":"09点59分"}
456|{"name":"李斯特","create_date":"2019-04-18"}

解决方式

对于公用的多字段用json_tuple来提取,对于不同的字段,用case when+get_json_object来提取,即可解决。

第一次提取

直接用json_tuple中使用if或case when进行判断来进行解析:

select id,name,create_date from test_json
lateral view json_tuple(json_col,'name',if(id='123','query_time','create_date'))jt as name,create_date;

提取结果

123 张三  NULL
456 李斯特 2019-04-18

第二次提取

这次使用json_tuple+get_json_object来提取

select id,name,
case when id='123' then get_json_object(json_col,'$.query_time')
else get_json_object(json_col,'$.create_date') end as create_date
 from test_json
lateral view json_tuple(json_col,'name')j as name;

提取结果

123 张三  09点59分
456 李斯特 2019-04-18

提取成功。

相关文章

网友评论

      本文标题:hive中json_tuple遇上多条件判断问题解决

      本文链接:https://www.haomeiwen.com/subject/ldxtgqtx.html