--1.先替换切割字符串
--2.替换[]--3.按照替换得物特殊字符串切割,并对数据炸开(炸开后的数据可用where做过滤)
SELECT operation_log,GET_JSON_OBJECT(aa,'$.time')from(
select
operation_log
from jiuwu_mrt.ods_trade_jiuwu_jiuwu_sellers_order_attr_ds WHERE dt='20211116'
and seller_order_no='95021111478659953579')LATERALVIEWexplode(split(REPLACE(REPLACE(REPLACE(operation_log,'},{','}###{'),'[',''),']',''),'###')) tmp AS aa
WHEREGET_JSON_OBJECT(aa,'$.type')='retrieve';
6.hive计算维度
--FIRST_VALUE: 取分组内排序后,截止到当前行,第一个值
--LAST_VALUE: 取分组内排序后,截止到当前行,最后一个值
select
cookieid,
createtime,
url,row_number()over(partition by cookieid order by createtime)as rn,last_value(url)over(partition by cookieid order by createtime)as last1
from cookie.cookie4;1.with cube
--with cube 对所有的字段分别进行聚合(从0个字段到n个字段)可以实现多个任意维度的查询
--cube(a,b,c)则首先会对(a,b,c)进行group by ,然后依次是(a,b),(a,c),(a),(b,c),(b),(c),最后在对全表进行group by,他会统计所选列中值的所有组合的聚合,用cube函数就可以完成所有维度的聚合工作
SELECT city_name,city_level ,COUNT(*) from
jiuwu_mrt.dim_city_level GROUPBY city_name,city_level WITH cube ;2.with rollup
--with rollup
-- rullup函数是cube的子集,以最左侧维度为主,按照顺序依次进行聚合。
-- 例如聚合的维度为 col1,col2,col3 使用rollup聚合的字段分别为 col1,(col1,col2),(col1,col3),(col1,col2,col3)SELECT city_name,city_level ,COUNT(*) from
jiuwu_mrt.dim_city_level GROUPBY city_name,city_level WITHROLLUP;3. grouping sets
-- grouping sets
-- 当不需要cube将所有维度都列出来的时候,当只需要部分维度的时候,可以使用grouping sets来进行决定聚合那些维度
-- 例如 grouping sets(col1,(col2,col3)) 只聚合col1维度,(col2,col3)维度 并不会自动聚合(col1,col2,col3)维度
SELECT col1,col2 ,col3,COUNT(*) from
jiuwu_mrt.dim_city_level GROUPBY col1,col2 ,col3 group setings(col1,(col2,col3))