Skip to content

lag(col, offset, default)

Описание

Функция lag() возвращает значение из строки, которая отстает от текущей на указанное количество позиций в окне.

Параметры

  • col: Column - столбец, значение которого нужно получить
  • offset: Integer - количество строк для отступа (по умолчанию 1)
  • default: Any - значение по умолчанию, если отступ выходит за пределы окна (по умолчанию NULL)

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

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

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

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

# Создаем SparkSession
spark = SparkSession.builder.appName("lag_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",
    lag("value", 1, 0).over(window).alias("previous_value")
).show()

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

Примечания

  • Функция должна использоваться с оконной спецификацией
  • Для получения следующего значения используйте lead()
  • Для получения значения по номеру строки используйте nth_value()
  • Для вычисления разницы между текущим и предыдущим значением используйте diff()