Skip to content

nth_value(col, n)

Описание

Функция nth_value() возвращает значение из n-й строки в окне.

Параметры

  • col: Column - столбец, значение которого нужно получить
  • n: Integer - номер строки (начиная с 1)

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

Тип данных совпадает с типом столбца col

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

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

# Создаем SparkSession
spark = SparkSession.builder.appName("nth_value_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",
    nth_value("value", 3).over(window).alias("third_value")
).show()

# Результат:
# +----+-----+------------+
# |name|value|third_value |
# +----+-----+------------+
# |   A|  100|         300|
# |   B|  200|         300|
# |   C|  300|         300|
# |   D|  400|         300|
# |   E|  500|         300|
# +----+-----+------------+

Примечания

  • Функция должна использоваться с оконной спецификацией
  • Если n меньше 1 или больше количества строк в окне, возвращается NULL
  • Для получения предыдущего значения используйте lag()
  • Для получения следующего значения используйте lead()
  • Для получения номера строки используйте row_number()