转义配置单元函数Get_json_Object中的子运算符 [英] Escaping child operator in the HIVE function get_json_object
本文介绍了转义配置单元函数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屋!
查看全文