rank()
Описание
Функция rank()
вычисляет ранг значений в окне. При одинаковых значениях присваивается одинаковый ранг, а следующий ранг пропускается.
Параметры
Нет параметров
Возвращаемое значение
Long - ранг текущей строки
Пример использования
from pyspark.sql import SparkSession
from pyspark.sql.window import Window
from pyspark.sql.functions import rank
# Создаем SparkSession
spark = SparkSession.builder.appName("rank_example").getOrCreate()
# Создаем DataFrame
data = [
("A", 100),
("B", 200),
("C", 200),
("D", 300),
("E", 300)
]
df = spark.createDataFrame(data, ["name", "value"])
# Определяем окно
window = Window.orderBy("value")
# Вычисляем ранг
result = df.select(
"name",
"value",
rank().over(window).alias("rank")
).show()
# Результат:
# +----+-----+----+
# |name|value|rank|
# +----+-----+----+
# | A| 100| 1|
# | B| 200| 2|
# | C| 200| 2|
# | D| 300| 4|
# | E| 300| 4|
# +----+-----+----+
Примечания
- Функция должна использоваться с оконной спецификацией
- При одинаковых значениях присваивается одинаковый ранг
- Следующий ранг пропускается (в отличие от
dense_rank()
) - Для вычисления плотного ранга используйте
dense_rank()
- Для получения номера строки используйте
row_number()
- Для вычисления относительного ранга используйте
percent_rank()