Python PySpark:查找项目是否在前5名流行项中
我有这样的销售清单(pySpark):Python PySpark:查找项目是否在前5名流行项中,python,dataframe,apache-spark,pyspark,apache-spark-sql,Python,Dataframe,Apache Spark,Pyspark,Apache Spark Sql,我有这样的销售清单(pySpark): 所以,我想得到一个新的列:按购买数量的项目位置。一天中最受欢迎的项目将有排名1等。我已经尝试实现窗口功能,但不知道如何正确执行。最好的方法是什么?谢谢。谢谢!但我把第一行改成了。。。partitionBy('date','productId')。。。然后成功了,谢谢你!但我把第一行改成了。。。partitionBy('date','productId')。。。然后它成功了。 import pyspark.sql.functions as F count_
所以,我想得到一个新的列:按购买数量的项目位置。一天中最受欢迎的项目将有排名1等。我已经尝试实现窗口功能,但不知道如何正确执行。最好的方法是什么?谢谢。谢谢!但我把第一行改成了。。。partitionBy('date','productId')。。。然后成功了,谢谢你!但我把第一行改成了。。。partitionBy('date','productId')。。。然后它成功了。
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)
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)