一、hive的分析函数
1.开窗函数(窗口函数) over()
格式:聚合函数 over(partition by ... order by ...)
2.排名函数
row_number()
简记:唯一且连续 巧记: 1234
rank()
简记:并列不连续 巧记: 1224
dense_rank()
简记:并列且连续 巧记: 1223
3.最值
first_value()
-- FIRST_VALUE 取分组内排序后,截止到当前行,第一个值
select cookieid, createtime, url,
row_number() over (partition by cookieid order by createtime) rn,
first_value(url) over (partition by cookieid order by createtime) fv
from website_url_info;
last_value()
-- LAST_VALUE 取分组内排序后,截止到当前行,最后一个值
select cookieid, createtime, url,
row_number() over (partition by cookieid order by createtime) rn,
last_value(url) over (partition by cookieid order by createtime rows between unbounded preceding and unbounded following) fv
from website_url_info;
4.分桶ntile()
/*ntile函数
- 功能:将分组排序之后的数据分成指定的若干个部分(若干个桶)
- 规则:尽量平均分配 ,优先满足最小的桶,彼此最多不相差1个。
*/
--需求:统计每个用户pv数最多的前3分之1。
--理解:将数据根据cookieid分 根据pv倒序排序 排序之后分为3个部分 取第一部分
SELECT * from
(SELECT
cookieid,
createtime,
pv,
NTILE(3) OVER(PARTITION BY cookieid ORDER BY pv DESC) AS rn
FROM website_pv_info) tmp where rn =1;
本文介绍了Hive中的分析函数,包括窗口函数over()用于聚合操作,排名函数如row_number()、rank()和dense_rank()的区别,以及最值函数first_value()和last_value()的功能。还提到了分桶函数ntile()的应用,例如用于获取每个用户PV数的前三分之一。

被折叠的 条评论
为什么被折叠?



