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