Hive窗口函数回顾

1.语法

Hive窗口函数回顾_第1张图片

1.1 基于行的窗口函数

Hive的窗口函数分为两种类型,一种是基于行的窗口函数,即将某个字段的多行限定为一个范围,对范围内的字段值进行计算,最后将形成的字段拼接在该表上。

Hive窗口函数回顾_第2张图片
Hive窗口函数回顾_第3张图片
Hive窗口函数回顾_第4张图片
注意:在进行窗口函数计算之前,要加上order by先对数据进行排序。即

sum(amount) over(order by xxx rows between xxx and xxx)

1.2基于值的窗口函数

Hive中基于值的窗口函数,是将某个字段每行的值-1得出要限定的范围,比如某个字段第一行的值为2,那么它的限定范围就是[1,2],第二行的值为6,那么它的限定范围就是[5,6],最后将结果拼接在源表上。
Hive窗口函数回顾_第5张图片

2.窗口分区

窗口分区就是在定义窗口范围的时候,就指定分区字段,每个分区单独划分窗口。
在这里插入图片描述
上述代码,按照userid分为了两个区,每个分区内单独开窗实现累加

3.窗口缺省

Hive窗口函数回顾_第6张图片

4.常用的窗口函数

4.1 聚合函数

Hive窗口函数回顾_第7张图片

4.2 跨行取值函数

4.2.1 lead和lag函数

Lead是用于获取当前行的上边某行或者某个字段的值
Lag是用于获取当前行的下边某行或者某个字段的值
Hive窗口函数回顾_第8张图片
Lead和Lag函数式不支持自定义窗口的
Hive窗口函数回顾_第9张图片

4.2.2 First_value和Last_value

获取窗口内**(基于当前行的)**某一列第一个值或者最后一个值
Hive窗口函数回顾_第10张图片
其中false代表不跳过空值,而true则代表跳过空值。
Hive窗口函数回顾_第11张图片

4.3 排名函数

rank,dense_rank,row_number
排名函数也不支持自定义窗口
Hive窗口函数回顾_第12张图片
Hive窗口函数回顾_第13张图片

你可能感兴趣的:(大数据,hive,hadoop,数据仓库)