Aller au contenu principal

collect_list

Collecte les valeurs d'une colonne dans une liste, en conservant les doublons, et renvoie cette liste d'objets. La fonction est non déterministe, car l'ordre des résultats collectés dépend de l'ordre des lignes, qui peut devenir non déterministe après les Opérations de brassage.

Syntaxe

Python
from pyspark.sql import functions as sf

sf.collect_list(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 Column représentant une liste de valeurs collectées, avec les valeurs en double incluses.

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_list('value')).alias('sorted_list')).show()
Output
+-----------+
|sorted_list|
+-----------+
| [1, 2, 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_list('age'), asc=False).alias('sorted_list')).show()
Output
+-----------+
|sorted_list|
+-----------+
| [5, 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_list('id')).alias('sorted_list'))
df.orderBy(sf.desc("name")).show()
Output
+----+-----------+
|name|sorted_list|
+----+-----------+
|John| [1, 2]|
| Ana| [3]|
+----+-----------+