collect_set(col)
Описание
Функция collect_set()
собирает все уникальные значения столбца в массив, удаляя дубликаты. Это агрегатная функция, которая должна использоваться с groupBy()
.
Параметры
col
: Column - столбец, значения которого нужно собрать в массив
Возвращаемое значение
Array - массив уникальных значений столбца
Пример использования
from pyspark.sql.functions import collect_set
from pyspark.sql import SparkSession
# Создаем SparkSession
spark = SparkSession.builder.appName("collect_set_example").getOrCreate()
# Создаем DataFrame
data = [
("A", 1),
("A", 2),
("A", 2),
("B", 3),
("B", 4),
("B", 4)
]
df = spark.createDataFrame(data, ["group", "value"])
# Используем collect_set для сбора уникальных значений в массив
result = df.groupBy("group").agg(
collect_set("value").alias("unique_values")
).show(truncate=False)
# Результат:
# +-----+-------------+
# |group|unique_values|
# +-----+-------------+
# |A |[1, 2] |
# |B |[3, 4] |
# +-----+-------------+
# Пример с разными типами данных
data = [
("A", "x"),
("A", "y"),
("A", "x"),
("B", "z"),
("B", "w"),
("B", "z")
]
df = spark.createDataFrame(data, ["group", "value"])
result = df.groupBy("group").agg(
collect_set("value").alias("unique_values")
).show(truncate=False)
Примечания
- Функция удаляет дубликаты значений
- Порядок элементов в массиве не гарантирован
- Для сохранения дубликатов используйте
collect_list()
- Для сортировки массива используйте
array_sort()
- Для фильтрации массива используйте
filter()