メインコンテンツまでスキップ

収集リスト

重複を維持しながら列の値をリストに収集し、このオブジェクトのリストを返します。収集された結果の順序は行の順序に依存するため、この関数は非決定的であり、シャッフル操作後には非決定的になる可能性があります。

構文

Python
from pyspark.sql import functions as sf

sf.collect_list(col)

パラメーター

パラメーター

Type

説明

col

pyspark.sql.Column または列名

機能がコンピュートであるターゲットカラム。

戻り値

pyspark.sql.Column: 重複する値も含め、収集された値のリストを表す新しい Column オブジェクト。

例1 : DataFrameから値を収集し、結果を昇順で並べ替える

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]|
+-----------+

例2 : DataFrameから値を収集し、結果を降順で並べ替える

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]|
+-----------+

例3 : 複数の列を持つDataFrameから値を収集し、結果を並べ替える

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]|
+----+-----------+