1.语法
1.1 基于行的窗口函数
Hive的窗口函数分为两种类型,一种是基于行的窗口函数,即将某个字段的多行限定为一个范围,对范围内的字段值进行计算,最后将形成的字段拼接在该表上。
注意:在进行窗口函数计算之前,要加上order by先对数据进行排序。即
sum(amount) over(order by xxx rows between xxx and xxx)
1.2基于值的窗口函数
Hive中基于值的窗口函数,是将某个字段每行的值-1得出要限定的范围,比如某个字段第一行的值为2,那么它的限定范围就是[1,2],第二行的值为6,那么它的限定范围就是[5,6],最后将结果拼接在源表上。
2.窗口分区
窗口分区就是在定义窗口范围的时候,就指定分区字段,每个分区单独划分窗口。
上述代码,按照userid分为了两个区,每个分区内单独开窗实现累加
3.窗口缺省
4.常用的窗口函数
4.1 聚合函数
4.2 跨行取值函数
4.2.1 lead和lag函数
Lead是用于获取当前行的上边某行或者某个字段的值
Lag是用于获取当前行的下边某行或者某个字段的值
Lead和Lag函数式不支持自定义窗口的
4.2.2 First_value和Last_value
获取窗口内**(基于当前行的)**某一列第一个值或者最后一个值
其中false代表不跳过空值,而true则代表跳过空值。
4.3 排名函数
rank,dense_rank,row_number
排名函数也不支持自定义窗口