Skip to content

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