- 谈到 SQL 的开窗函数,要说到HIVE了,因为这个是HIVE支持的特性,但是在Spark SQL中支持HIVE 的。那么让我们看一看开窗函数是什么吧。
- 什么是开窗函数呢 ?
- 开窗函数也叫分析函数,有两类:一类是聚合开窗函数,一类是排序开窗函数。
- 开窗函数的调用格式为: 函数名(列名) over(partition by 列名 order by 列名)
- 如果你没有接触过开窗函数上面这个格式你也许会有些疑惑,但你只要了解一些聚合函数,那么理解开窗函数就非常容易了,我们知道聚合函数对一组值进行计算并返回单一的值,如sum(),count(),max(),min(),avg()等,这些函数常与group by 语句连用。但是一组数据只返回一组指是不能满足需求的,如我们常想知道的各个地区的第一名是谁? 各个班级的前几名是谁?这个时候需要每一组返回多个值。 用开窗函数解决就非常方便。
- 首先我们提一个需求。下面是一张班级表 其中name为学生姓名,class 为班级班级,score 为成绩,那么我们提出一个需求:得出每个班级内成绩最高的学生信息。表名为 A。
- 我们先使用传统的方法进行查找,但是需要创建临时表才可以所以性能也不够好,那么我们下面使用Spark SQL 中的开窗函数进行优化/