hive函数五之窗口函数

237 阅读2分钟

一起养成写作习惯!这是我参与「掘金日新计划 · 4 月更文挑战」的第5天,点击查看活动详情

前几篇文章都在介绍数值函数、字符串函数的使用,因为今天在实际hive的sql开发过程中遇到了一个新的函数,窗口函数,觉得非常有用,所以插进来先讲一讲,字符串函数就先短暂的暂停一下,在后续文章中会继续连载的。

窗口函数

窗口函数顾名思义就是会框定一个范围,然后只在这个范围内进行数据处理,要理解窗口函数就要先知道聚合函数的使用,因为这两者经常结合在一起使用,聚合函数我在后面的文章中也会做详细的介绍,这里先简单说下聚合函数就是我们常用的sum、count等求和函数,可以将多行的数据汇总在一起。

那么这个跟窗口函数有什么关系呢?先来简单看下窗口函数的常见使用表达式:

Function() Over (Partition By Column1,Column2,Order By Column3)

具体的使用案例,在什么情况下可以用到窗口函数呢,就是当我们要比较多行的数据,对数据的某一个字段进行排序,或者获取某几行数据中某一字段的最大值或者最小值。

比如表A中记录了员工每天早上上班时间和晚上的下班时间,现在要获取到小王在每天早上上班最早的时间和最晚的时间。就可以用到窗口函数。

这里用到了两次分组,第一次是对人员进行分组排序,第二次是对上班时间进行分组排序,第一次分组排序所需字段的就是表达式中的 Column1,Column2,第二次分组排序也就是我们最终要获得的排序结果值是表达式中的Column3。

结合上row_number函数可以对排序结果进行编号,通过编号来获取最终数据。

下一篇重点讲一下每一个关键词的作用,以及窗口函数和其他函数的组合使用。