収集セット
列の値を重複を排除してセットに収集し、このオブジェクトのセットを返します。この関数は非決定的です。収集された結果の順序は行の順序に依存し、シャッフル操作後は行の順序が非決定的になる可能性があります。
構文
Python
from pyspark.sql import functions as sf
sf.collect_set(col)
パラメーター
パラメーター | Type | 説明 |
|---|---|---|
|
| 機能がコンピュートであるターゲットカラム。 |
戻り値
pyspark.sql.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_set('value')).alias('sorted_set')).show()
Output
+----------+
|sorted_set|
+----------+
| [1, 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_set('age'), asc=False).alias('sorted_set')).show()
Output
+----------+
|sorted_set|
+----------+
| [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_set('id')).alias('sorted_set'))
df.orderBy(sf.desc("name")).show()
Output
+----+----------+
|name|sorted_set|
+----+----------+
|John| [1, 2]|
| Ana| [3]|
+----+----------+