1.语法 1.1 基于行的窗口函数 Hive的窗口函数分为两种类型,一种是基于行的窗口函数,即将某个字段的多行限定为一个范围,对范围内的字段值进行计算,最后将形成的字段拼接在该表上。 注意:在
Hive的窗口函数分为两种类型,一种是基于行的窗口函数,即将某个字段的多行限定为一个范围,对范围内的字段值进行计算,最后将形成的字段拼接在该表上。
注意:在进行窗口函数计算之前,要加上order by先对数据进行排序。即
sum(amount) over(order by xxx rows between xxx and xxx)
Hive中基于值的窗口函数,是将某个字段每行的值-1得出要限定的范围,比如某个字段第一行的值为2,那么它的限定范围就是[1,2],第二行的值为6,那么它的限定范围就是[5,6],最后将结果拼接在源表上。
(1)unbounded preceding:无边界的,可以理解为负无穷。
(2)[num] preceding:num为数字,表示当前值 减num 的值作为起点。
(3)current row:起点为当前值。
(4)[num] following:表示当前值 加num 的值作为起点。
窗口分区就是在定义窗口范围的时候,就指定分区字段,每个分区单独划分窗口。
上述代码,按照userid分为了两个区,每个分区内单独开窗实现累加
Lead是用于获取当前行的上边某行或者某个字段的值
Lag是用于获取当前行的下边某行或者某个字段的值
Lead和Lag函数式不支持自定义窗口的
获取窗口内**(基于当前行的)**某一列第一个值或者最后一个值
其中false代表不跳过空值,而true则代表跳过空值。
rank,dense_rank,row_number
排名函数也不支持自定义窗口
来源地址:https://blog.csdn.net/weixin_47109902/article/details/133675813
--结束END--
本文标题: Hive窗口函数回顾
本文链接: https://lsjlt.com/news/429142.html(转载时请注明来源链接)
有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341
2024-04-01
2024-04-03
2024-04-03
2024-01-21
2024-01-21
2024-01-21
2024-01-21
2023-12-23
回答
回答
回答
回答
回答
回答
回答
回答
回答
回答
0