Compartir a través de


collect_set

Recopila los valores de una columna en un conjunto, eliminando duplicados y devuelve este conjunto de objetos. Esta función no es determinista, ya que el orden de los resultados recopilados depende del orden de las filas, que puede ser no determinista después de cualquier operación aleatoria.

Syntax

from pyspark.sql import functions as sf

sf.collect_set(col)

Parámetros

Parámetro Tipo Description
col pyspark.sql.Column o nombre de columna Columna de destino en la que se calcula la función.

Devoluciones

pyspark.sql.Column: nuevo objeto Column que representa un conjunto de valores recopilados, duplicados excluidos.

Examples

Ejemplo 1: Recopilar valores de un dataframe y ordenar el resultado en orden ascendente

from pyspark.sql import functions as sf
df = spark.createDataFrame([(1,), (2,), (2,)], ('value',))
df.select(sf.sort_array(sf.collect_set('value')).alias('sorted_set')).show()
+----------+
|sorted_set|
+----------+
|    [1, 2]|
+----------+

Ejemplo 2: Recopilar valores de un dataframe y ordenar el resultado en orden descendente

from pyspark.sql import functions as sf
df = spark.createDataFrame([(2,), (5,), (5,)], ('age',))
df.select(sf.sort_array(sf.collect_set('age'), asc=False).alias('sorted_set')).show()
+----------+
|sorted_set|
+----------+
|    [5, 2]|
+----------+

Ejemplo 3: Recopilar valores de un dataframe con varias columnas y ordenar el resultado

from pyspark.sql import functions as sf
df = spark.createDataFrame([(1, "John"), (2, "John"), (3, "Ana")], ("id", "name"))
df = df.groupBy("name").agg(sf.sort_array(sf.collect_set('id')).alias('sorted_set'))
df.orderBy(sf.desc("name")).show()
+----+----------+
|name|sorted_set|
+----+----------+
|John|    [1, 2]|
| Ana|       [3]|
+----+----------+