Hive 超赞的解析 Json 数组的函数( 二 )


 
举例
例如:Hive 中有一张 page_ads 表,表数据结构如下:

Hive 超赞的解析 Json 数组的函数

文章插图
 
page_name 代表页面名称,ads_id 代表投放广告的所属 id,多个 id之间使用逗号分隔 。
 
需求:统计所有广告 id 在所有页面中出现的次数 。
第一步解析:拆分广告id
拆分sql语句:
SELECT page_name, ads_idFROM page_ads LATERAL VIEW explode(ads_id) adTable AS adid;拆分结果:
Hive 超赞的解析 Json 数组的函数

文章插图
 
第二步解析:聚合统计
聚合统计sql语句:
SELECT adid, count(1)FROM page_ads LATERAL VIEW explode(ads_id) adTable AS adidGROUP BY adid;统计结果:
Hive 超赞的解析 Json 数组的函数

文章插图
 
2. 具体函数运用解析 data_json 表的sql语句如下:
select goods_id,get_json_object(sale_json,'$.sold') as soldfrom data_jsonLATERAL VIEW explode(split(goods_id,','))goods as goods_idLATERAL VIEW explode(split(regexp_replace(regexp_replace(json_str , '\[|\]',''),'\}\,\{','\}\;\{'),'\;')) sales as sale_json;注意:
上述语句是 3*3 笛卡尔积的结果,所以此方式适用于数据量不是很大的情况 。
执行结果如下:
Hive 超赞的解析 Json 数组的函数

文章插图
 

【Hive 超赞的解析 Json 数组的函数】


推荐阅读