笔记-Hive窗口函数

官方文档:LanguageManual WindowingAndAnalytics - Apache Hive - Apache Software Foundation

先看看

对于窗口函数,最重要的是理解窗口是怎么被选择的,窗口的选择范围是在over内定义的的,包含三部分:

总结下来就是,partition by确定池子有多大,order by和窗口子句确定怎么在这个池子里捞鱼

1. partition by,确定窗口范围,不写的话,就是全部行,全部行作为一个分区

2. order by,有2个功能,第1个是排序;第2个是没有窗口子句的时候,指定了 ORDER BY,默认使用分区内第一行到当前值,但是操作的列出现相同值,结果就会相同,但是单独指定窗口子句的话就不会出现相同值,见sum() sample3和sample4。如果指定了窗口子句,order by的窗口子句功能就失效了 

        2.1.有 partition by,则分区内排序

        2.2.没有 partition by,则全部数据排序

3. 窗口子句,单独定义窗口;

        如果不指定窗口子句,则默认采用以下的窗口定义:

        3.1. 若不指定 ORDER BY,默认使用分区内所有行 

        ROWS BETWEEN UNBOUNDED PRECEDING AND UNBOUNDED FOLLOWING.

        3.2. 若指定了 ORDER BY,默认使用分区内第一行到当前值 

        ROWS BETWEEN UNBOUNDED PRECEDING AND CURRENT ROW.

窗口函数执行顺序

窗口函数在group by聚合之后,因此可以将数据先去重,再使用窗口函数

1. 排序

第一个括号内参数说明:无参数

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值