举例
例如:Hive 中有一张 page_ads 表,表数据结构如下:
文章插图
page_name 代表页面名称,ads_id 代表投放广告的所属 id,多个 id之间使用逗号分隔 。
需求:统计所有广告 id 在所有页面中出现的次数 。
第一步解析:拆分广告id
拆分sql语句:
SELECT page_name, ads_idFROM page_ads LATERAL VIEW explode(ads_id) adTable AS adid;
拆分结果:文章插图
第二步解析:聚合统计
聚合统计sql语句:
SELECT adid, count(1)FROM page_ads LATERAL VIEW explode(ads_id) adTable AS adidGROUP BY adid;
统计结果:文章插图
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 数组的函数】
推荐阅读
- Mysql统计近30天的数据,无数据的填充0
- 牙周病严重吗
- 历史悠久的福建茶文化
- 牙痛是什么病的前兆
- 眉毛纹坏了怎么淡化
- 脸上的晒斑怎么淡化
- 面包机的做法家庭做法比例 面包机怎么做面包
- 如何淡化唇毛的小妙招
- 抖音上电影剪辑视频怎么做的 怎么做的
- 淡化痘印最有效的方法