您当前的位置: 首页 > 

宝哥大数据

暂无认证

  • 0浏览

    0关注

    1029博文

    0收益

  • 0浏览

    0点赞

    0打赏

    0留言

私信
关注
热门博文

开窗函数 row_number()

宝哥大数据 发布时间:2018-07-22 10:02:37 ,浏览量:0

Spark 1.4.x版本以后,为Spark SQL和DataFrame引入了开窗函数,比如最经典,最常用的,row_number(),可以让我们实现分组取topn的逻辑。 row_number()开窗函数的语法说明

首先可以,在SELECT查询时,使用row_number()函数 其次,row_number()函数后面先跟上OVER关键字 然后括号中,是PARTITION BY,也就是说根据哪个字段进行分组 其次是可以用ORDER BY进行组内排序 然后row_number()就可以给每个组内的行,一个组内行号

    /**
     * 获取各区域top3热门商品
     * @param sqlContext
     * @return
     */
    private static JavaRDD getAreaTop3ProductRDD() {
        // 使用开窗函数先进行一个子查询
        // 按照area进行分组,给每个分组内的数据,按照点击次数降序排序,打上一个组内的行号
        // 接着在外层查询中,过滤出各个组内的行号排名前3的数据
        // 其实就是咱们的各个区域下top3热门商品

        String sql = "SELECT  area, product_id, click_count, city_infos, product_name, product_status "
                + "FROM ("
                + "SELECT area, product_id, click_count, city_infos, product_name, product_status, " 
                + "ROW_NUMBER() OVER(PARTITION BY area ORDER BY click_count DESC) rank "
                + "FROM area_fullprod_click_count "
                + ") t "
                + "WHERE rank            
关注
打赏
1587549273
查看更多评论
0.0385s