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()