first_value(col[, ignoreNulls])
Описание
Функция first_value() возвращает первое значение столбца для группы строк с учетом порядка. Это оконная функция, которая должна использоваться с window().
Параметры
col: Column - столбец для получения первого значенияignoreNulls: Boolean (опционально) - если TRUE, то NULL значения игнорируются, по умолчанию FALSE
Возвращаемое значение
Тип значения из столбца col - первое значение в окне
Пример использования
from pyspark.sql.functions import first_value, window
from pyspark.sql import SparkSession
from pyspark.sql.window import Window
# Создаем SparkSession
spark = SparkSession.builder.appName("first_value_example").getOrCreate()
# Создаем DataFrame
data = [
    ("A", 1, "2023-01-01"),
    ("A", 2, "2023-01-02"),
    ("A", 3, "2023-01-03"),
    ("B", None, "2023-01-01"),
    ("B", 4, "2023-01-02"),
    ("B", 5, "2023-01-03"),
    ("B", 6, "2023-01-04")
]
df = spark.createDataFrame(data, ["group", "value", "date"])
# Создаем окно
window = Window.partitionBy("group").orderBy("date")
# Получаем первое значение
result = df.withColumn(
    "first_value",
    first_value("value").over(window)
).withColumn(
    "first_non_null",
    first_value("value", ignoreNulls=True).over(window)
).show()
# Результат:
# +-----+-----+----------+-----------+--------------+
# |group|value|date      |first_value|first_non_null|
# +-----+-----+----------+-----------+--------------+
# |A    |1    |2023-01-01|1          |1             |
# |A    |2    |2023-01-02|1          |1             |
# |A    |3    |2023-01-03|1          |1             |
# |B    |null |2023-01-01|null       |4             |
# |B    |4    |2023-01-02|null       |4             |
# |B    |5    |2023-01-03|null       |4             |
# |B    |6    |2023-01-04|null       |4             |
# +-----+-----+----------+-----------+--------------+
 Примечания
- Без параметра ignoreNulls функция вернет первое значение, даже если оно NULL
 - С ignoreNulls=True функция пропустит NULL значения и вернет первое ненулевое значение
 - Для получения последнего значения используйте 
last_value() - Для получения первого значения без учета порядка используйте 
first()