Aller au contenu principal

collect_set

Collecte les valeurs d'une colonne dans un ensemble, en éliminant les doublons, et renvoie cet ensemble d'objets. Cette fonction est non déterministe car l'ordre des résultats collectés dépend de l'ordre des lignes, qui peut être non déterministe après toute opération de brassage.

Syntaxe

Python
from pyspark.sql import functions as sf

sf.collect_set(col)

parameter

parameter

Type

Description

col

pyspark.sql.Column ou nom de colonne

La colonne cible sur laquelle la fonction est calculée.

parameter

Type

Description

col

pyspark.sql.Column ou nom de colonne

La colonne cible sur laquelle la fonction est calculée.

Renvoie

pyspark.sql.Column: Un nouvel objet Colonne représentant un ensemble de valeurs collectées, doublons exclus.

Exemples

Exemple 1 : Recueillir les valeurs d'un DataFrame et trier le résultat par ordre croissant

Python
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()
Output
+----------+
|sorted_set|
+----------+
| [1, 2]|
+----------+

Exemple 2 : Collecter des valeurs d'un DataFrame et trier le résultat par ordre décroissant.

Python
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()
Output
+----------+
|sorted_set|
+----------+
| [5, 2]|
+----------+

Exemple 3 : Collecter les valeurs d'un DataFrame avec plusieurs colonnes et trier le résultat

Python
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()
Output
+----+----------+
|name|sorted_set|
+----+----------+
|John| [1, 2]|
| Ana| [3]|
+----+----------+