1. 概念
hive中的窗口函数和sql中的窗口函数相类似,一般用于OLAP分析(在线分析处理)。有时我们想要既显示聚集前的数据,又要显示聚集后的数据,这便要用到窗口函数了。注意:
在SQL处理中,窗口函数(over 关键字) 都是最后一步执行,且仅位于Order by字句之前。
应用场景:
1. 用于分区排序;
2. 动态Group By;
3. Top N;
4. 累计计算;
5. 层次查询。
实验数据
uid,dt,pv
A,2018-04-10,1
A,2018-04-11,5
A,2018-04-12,7A,2018-04-13,3
A,2018-04-14,2
A,2018-04-15,4
A,2018-04-16,4
B,2018-04-11,3
B,2018-04-12,5
2. 窗口函数 part1
2.1 ROW_NUMBER()
常用于分组内topN 场景,从1开始按照顺序,生成分组内记录的序列。
2.2 RANK & DENSE_RANK
rank() 生成数据项在分组中的排名,排名相等会在名次中留下空位;而dense_rank() 在排名相等时则不会在名次中留下空位。
select uid,dt,pv,
rank() over(partition by uid order by pv desc) as rn1,
dense_rank() over(partition by uid order by pv desc) as rn2,
row_number() over(partition by uid order by pv desc) as rn3
from XX;

2.3 NTILE
ntile 把有序的数据集合平均分配到指定的num个桶中,将桶号分配给每一行。如果不能平均分配,则优先分配较小编号的桶,并且各个桶中能放的行数最

最低0.47元/天 解锁文章
995

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



