sql- 解析JSON对象
一、GET_JSON_OBJECT :是用来解析JSON对象 [1]
SELECT get_json_object ( json_string, path )
参数 | 描述 |
---|---|
json_string | JSON对象变量,TEXT类型。格式为合法JSON格式字符串。 |
path |
JSON内层对象访问变量。使用$表示JSON变量标识,通过 . 或[]读取JSON内层对象或数组。
如果您输入的JSON字符串无效,则系统返回NULL。 |
CREATE extension hive_compatible;
Result:
data =
{"store":{
"fruit":[{"weight":8,"type":"apple"}, {"weight":9,"type":"pear"}],
"bicycle":{"price":19.95,"color":"red"}},
"email":"amy@only_for_json_udf_test.net",
"owner":"amy"
SELECT get_json_object(data, '$.owner') FROM test;
Result: amy
SELECT get_json_object(data, '$.store.bicycle.price') FROM test;
Result: 19.95
SELECT get_json_object(data, '$.store.fruit[0]') FROM test;
Result: {"weight":8, "type":"apple"
json的分层 [2]
知识点json [3]
二、案例
解析思路:首先去掉列表,然后将对使用列变行,以及列变行json解析将式sencondLevel中的数据解析出来,进而数据进行计算
r1 as
--解析第一层,拆分数组
select hotel_id,
split(regexp_replace(regexp_extract(detail,'^\\[(.+)\\]$',1),'\\}]}\\,\\{', '\\}]}\\|\\|\\{'),'\\|\\|') as L1
from lastData
r2 as
--解析第一层,获取字段
select hotel_id,