pyspark:查找项目是否在前5名中

n3h0vuf2  于 2021-05-17  发布在  Spark
关注(0)|答案(1)|浏览(585)

我有这样的销售清单(Pypark):

+---------+----------+
|productId|      date|
+---------+----------+
|      868|2020-11-01| 
|      878|2020-11-01| 
|      878|2020-11-01| 
|      913|2020-11-01|     
|      746|2020-11-01|     
|      878|2020-11-01|     
|      657|2020-11-02|        
|      746|2020-11-02|       
|      101|2020-11-02|       
+---------+----------+

所以,我想得到一个新的列:按购买数量排列的项目位置。一天中最受欢迎的项目将有排名1等,我已经尝试实现窗口功能,但不知道如何正确地做到这一点。最好的方法是什么?谢谢。

y0u0uwnf

y0u0uwnf1#

import pyspark.sql.functions as F

count_per_day = F.count('productId').over(Window.partitionBy('date')).alias('count_per_day')
df = df.select('*', count_per_day)
rank = F.rank().over(Window.partitionBy('date').orderBy(F.col('count_per_day').desc())).alias('rank')
df = df.select('*', rank)

相关问题