Bagikan melalui


collect_set

Mengumpulkan nilai dari kolom ke dalam satu set, menghilangkan duplikat, dan mengembalikan kumpulan objek ini. Fungsi ini tidak deterministik karena urutan hasil yang dikumpulkan tergantung pada urutan baris, yang mungkin tidak deterministik setelah operasi acak.

Syntax

from pyspark.sql import functions as sf

sf.collect_set(col)

Parameter-parameternya

Pengaturan Tipe Description
col pyspark.sql.Column atau nama kolom Kolom target tempat fungsi dihitung.

Pengembalian Barang

pyspark.sql.Column: Objek Kolom baru yang mewakili sekumpulan nilai yang dikumpulkan, duplikat dikecualikan.

Examples

Contoh 1: Kumpulkan nilai dari DataFrame dan urutkan hasilnya dalam urutan naik

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

Contoh 2: Mengumpulkan nilai dari DataFrame dan mengurutkan hasilnya dalam urutan menurun

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

Contoh 3: Mengumpulkan nilai dari DataFrame dengan beberapa kolom dan mengurutkan hasilnya

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