any_value(col[, ignoreNulls])
Описание
Функция any_value()
возвращает произвольное значение из группы строк для указанного столбца. Если указан параметр ignoreNulls
, то NULL значения будут игнорироваться.
Параметры
col
: Column - столбец, из которого нужно получить значениеignoreNulls
: bool (опционально) - если True, NULL значения будут игнорироваться
Возвращаемое значение
Any - произвольное значение из группы строк
Пример использования
from pyspark.sql.functions import any_value
from pyspark.sql import SparkSession
# Создаем SparkSession
spark = SparkSession.builder.appName("any_value_example").getOrCreate()
# Создаем DataFrame
data = [
("A", 1),
("A", 2),
("A", None),
("B", 3),
("B", 4),
("B", None)
]
df = spark.createDataFrame(data, ["group", "value"])
# Используем any_value без ignoreNulls
result1 = df.groupBy("group").agg(
any_value("value").alias("any_value")
).show()
# Результат:
# +-----+---------+
# |group|any_value|
# +-----+---------+
# | A| 1|
# | B| 3|
# +-----+---------+
# Используем any_value с ignoreNulls=True
result2 = df.groupBy("group").agg(
any_value("value", True).alias("any_value_ignore_nulls")
).show()
# Результат:
# +-----+-------------------+
# |group|any_value_ignore_nulls|
# +-----+-------------------+
# | A| 1|
# | B| 3|
# +-----+-------------------+
Примечания
- Функция возвращает произвольное значение из группы, порядок не гарантирован
- Если все значения в группе NULL и ignoreNulls=True, возвращается NULL
- Для получения первого значения в группе используйте
first()
- Для получения последнего значения в группе используйте
last()
- Для получения максимального значения используйте
max()
- Для получения минимального значения используйте
min()