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