Skip to content

percent_rank()

Описание

Функция percent_rank() вычисляет относительный ранг строки в окне. Возвращает значение от 0 до 1, где 0 - первая строка, 1 - последняя строка.

Параметры

Нет параметров

Возвращаемое значение

Double - значение от 0 до 1, представляющее относительный ранг

Пример использования

from pyspark.sql import SparkSession
from pyspark.sql.window import Window
from pyspark.sql.functions import percent_rank

# Создаем SparkSession
spark = SparkSession.builder.appName("percent_rank_example").getOrCreate()

# Создаем DataFrame
data = [
    ("A", 100),
    ("B", 200),
    ("C", 300),
    ("D", 400),
    ("E", 500)
]
df = spark.createDataFrame(data, ["name", "value"])

# Определяем окно
window = Window.orderBy("value")

# Вычисляем относительный ранг
result = df.select(
    "name",
    "value",
    percent_rank().over(window).alias("percent_rank")
).show()

# Результат:
# +----+-----+-------------+
# |name|value|percent_rank |
# +----+-----+-------------+
# |   A|  100|          0.0|
# |   B|  200|         0.25|
# |   C|  300|          0.5|
# |   D|  400|         0.75|
# |   E|  500|          1.0|
# +----+-----+-------------+

Примечания

  • Функция должна использоваться с оконной спецификацией
  • Значение 0.0 означает, что строка первая в окне
  • Значение 1.0 означает, что строка последняя в окне
  • Для вычисления ранга используйте rank()
  • Для вычисления плотного ранга используйте dense_rank()
  • Для вычисления кумулятивного распределения используйте cume_dist()