欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

hive 中 json 字符串解析之 get_json_object 与 json_tuple

程序员文章站 2022-07-13 12:28:24
...

在技术对app进行埋点时,会讲多个字段存放在一个数组中,因此模型调用数据时,要对埋点数据进行解析,以作进一步的清洗。本文将介绍解析json字符串的两个函数:get_json_object和json_tuple。

表结构如下:

其中meta 字段数据, 数据表是 test_table

{{"a":1,"b":2},{"a":3,"b":4}}

get_json_object

函数的作用:用来解析json字符串的一个字段:

select get_json_object(meta,'$.a') as filtertype
,get_json_object(meta,'$.b')as filtersubtype 
from  test_table

运行结果 仅有一条数据,其实应该是2条:

filtertype  filtersubtype
1					2

json_tuple
函数的作用:用来解析json字符串中的多个字段

select b.a 
,b.b
from test_table a
lateral view json_tuple(meta,'a', 'b', ) b as  
a, b; 

运行结果:

filtertype  filtersubtype
1					2
3					4

使用正则表达式对json 数据进行处理

对于上面的test_table 使用:

select get_json_object(B.stock_code,'$.a') as a,
get_json_object(B.stock_code,'$.b') as b,
from (
	select split(regexp_replace(regexp_extract(meta
	,'^\[(.+)\]$',1),'\\}\\,\\{', \'\}\\|\\|\\{''),'\\|\|') as stock_codes
	from test_table
) A lateral view explode(A.stock_codes) B as stock_code