将SQL查询转换为PySpark数据帧查询(百分位排名计算)

将SQL查询转换为PySpark数据帧查询(百分位排名计算),pyspark,pyspark-dataframes,Pyspark,Pyspark Dataframes,我正在尝试将此SQL查询转换为PySpark DataFrame方法: SELECT id_profile, indications, PERCENT_RANK() OVER (PARTITION BY id_profile ORDER BY prediction DESC) AS rank FROM predictions 因此,id\u profile,指示和预测是我的预测数据帧中的列 我想我必须用Window方法来实现这一点,但我不知道该怎么做。试试这个: from pyspark.sq

我正在尝试将此SQL查询转换为PySpark DataFrame方法:

SELECT id_profile, indications, PERCENT_RANK()
OVER (PARTITION BY id_profile ORDER BY prediction DESC) AS rank FROM predictions
因此,
id\u profile
指示
预测
是我的
预测
数据帧中的列

我想我必须用
Window
方法来实现这一点,但我不知道该怎么做。

试试这个:

from pyspark.sql import functions as F
from pyspark.sql.window import Window

w=Window().partitionBy("id_profile").orderBy(F.col("prediction").desc())

df.withColumn("rank", F.percent_rank().over(w))\
  .select("id_profile","indications","rank")

谢谢你的回答!你知道这两种不同的数据处理方法是否应该具有相同的性能(速度)?速度不应该有差异