SparkSQL开窗函数

row_number()开窗函数

其实就是给每个分组的数据,按照其排序的顺序,打上一个分组内的行号

比如说,有一个分组date = 20151001,里面有三条数据,1122,1121,1124,

那么对这个分组的每一行使用row_number()开窗函数以后,三行,依次会获得组内的行号

行号从1开始递增,比如1122  1,1121  2,1123  3

 

row_number()开窗函数的语法说明

首先可以,在SELECT查询时,使用row_number函数,其次,row_number()函数后面先跟上OVER关键字

然后括号中,是PARTITION BY,也就是说根据哪个字段进行分组

其次是可以用ORDER BY 进行组内排序,

然后row_number()就可以给每个组内的行,一个组内行号

row_number() OVER (PARTITION BY category ORDER BY revenue DESC) rank

 

DataFrame saleDF = hiveContext.sql(""
            + "SELECT product,category,revenue"
            + "FORM ("
                + "SELECT"
                    + "project,"
                    + "category,"
                    + "revenue,"
                    + "row_number() OVER (PARTITION BY category ORDER BY revenue DESC) rank"
                + "FROM slaes"
            + ") tmp_sales"
            + "WHERE rank <=3");
//开窗函数的作用,其实就是,给每个分组的数据,按照排序顺序,打上分组内的行号

你可能感兴趣的:(spark)