Sql 使用PySpark中的窗口函数,根据字母顺序为行分配秩
我正试图根据字母顺序,在字符串列(user_id)上使用窗口函数为数据帧的行分配一个秩。例如:Sql 使用PySpark中的窗口函数,根据字母顺序为行分配秩,sql,apache-spark,pyspark,apache-spark-sql,window-functions,Sql,Apache Spark,Pyspark,Apache Spark Sql,Window Functions,我正试图根据字母顺序,在字符串列(user_id)上使用窗口函数为数据帧的行分配一个秩。例如: user_id | rank_num ------------------- A |1 A |1 A |1 B |2 A |1 B |2 C |3 B |2 B |2 C |3 我尝试使用以下代码行: user_window = Window().partitionBy('user
user_id | rank_num
-------------------
A |1
A |1
A |1
B |2
A |1
B |2
C |3
B |2
B |2
C |3
我尝试使用以下代码行:
user_window = Window().partitionBy('user_id').orderBy('user_id')
data = (data
.withColumn('profile_row_num', dense_rank().over(user_window))
)
但我得到的是:
user_id | rank_num
-------------------
A |1
A |1
A |1
B |1
A |1
B |1
C |1
B |1
B |1
C |1
不需要按
user\u id
进行分区。这将导致所有user\u id
落入自己的分区并获得1的排名。下面的代码应该满足您的要求:
user_window = Window.orderBy('user_id')
data = data.withColumn('profile_row_num', dense_rank().over(user_window))
@Blackishop问题在下面得到了解决,这正是因为在代码中添加了partitionBy方法的错误。