转义配置单元函数Get_json_Object中的子运算符 [英] Escaping child operator in the HIVE function get_json_object

查看:15
本文介绍了转义配置单元函数Get_json_Object中的子运算符的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我有一个包含JSON格式数据的字符串列的表。然后,我使用函数get_json_object来解析其中的一些数据。问题是我的一个字段的名称中包含.。因此,如果以纯文本形式编写字段名,该函数会将其解释为子运算符。

以下是一个有效的示例代码:

select get_json_object(col, '$.rootkey')
from (select '{"rootkey":15,"key.a":16,"key.b":17}' as col) test;

但此操作失败:

select get_json_object(col, '$.key.a')
from (select '{"rootkey":15,"key.a":16,"key.b":17}' as col) test;

get_json_object函数中是否有.转义的方法?

推荐答案

当前Get_json_Object()不支持转义,请参阅HIVE-2927

解决方法是使用lateral view json_tuple()

select v.rootkey, v.key_a, v.key_b
  from (select '{"rootkey":15,"key.a":16,"key.b":17}' as col) test
       lateral view json_tuple(col, 'rootkey', 'key.a','key.b') v as rootkey, key_a, key_b
;

结果:

v.rootkey   v.key_a   v.key_b   
15          16        17

这篇关于转义配置单元函数Get_json_Object中的子运算符的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆