Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/77.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql 使用PySpark中的窗口函数,根据字母顺序为行分配秩_Sql_Apache Spark_Pyspark_Apache Spark Sql_Window Functions - Fatal编程技术网

Sql 使用PySpark中的窗口函数,根据字母顺序为行分配秩

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)上使用窗口函数为数据帧的行分配一个秩。例如:

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方法的错误。