Catatan
Akses ke halaman ini memerlukan otorisasi. Anda dapat mencoba masuk atau mengubah direktori.
Akses ke halaman ini memerlukan otorisasi. Anda dapat mencoba mengubah direktori.
Mengembalikan baris baru untuk setiap elemen dengan posisi dalam array atau peta yang diberikan. Menggunakan nama pos kolom default untuk posisi, dan col untuk elemen dalam array dan key dan value untuk elemen dalam peta kecuali ditentukan sebaliknya.
Syntax
from pyspark.sql import functions as sf
sf.posexplode(col)
Parameter-parameternya
| Pengaturan | Tipe | Description |
|---|---|---|
col |
pyspark.sql.Column atau nama kolom |
Kolom target untuk dikerjakan. |
Pengembalian Barang
pyspark.sql.Column: satu baris per item array atau nilai kunci peta termasuk posisi sebagai kolom terpisah.
Examples
Contoh 1: Meledakkan kolom array
from pyspark.sql import functions as sf
df = spark.sql('SELECT * FROM VALUES (1,ARRAY(1,2,3,NULL)), (2,ARRAY()), (3,NULL) AS t(i,a)')
df.show()
+---+---------------+
| i| a|
+---+---------------+
| 1|[1, 2, 3, NULL]|
| 2| []|
| 3| NULL|
+---+---------------+
df.select('*', sf.posexplode('a')).show()
+---+---------------+---+----+
| i| a|pos| col|
+---+---------------+---+----+
| 1|[1, 2, 3, NULL]| 0| 1|
| 1|[1, 2, 3, NULL]| 1| 2|
| 1|[1, 2, 3, NULL]| 2| 3|
| 1|[1, 2, 3, NULL]| 3|NULL|
+---+---------------+---+----+
Contoh 2: Meledakkan kolom peta
from pyspark.sql import functions as sf
df = spark.sql('SELECT * FROM VALUES (1,MAP(1,2,3,4,5,NULL)), (2,MAP()), (3,NULL) AS t(i,m)')
df.show(truncate=False)
+---+---------------------------+
|i |m |
+---+---------------------------+
|1 |{1 -> 2, 3 -> 4, 5 -> NULL}|
|2 |{} |
|3 |NULL |
+---+---------------------------+
df.select('*', sf.posexplode('m')).show(truncate=False)
+---+---------------------------+---+---+-----+
|i |m |pos|key|value|
+---+---------------------------+---+---+-----+
|1 |{1 -> 2, 3 -> 4, 5 -> NULL}|0 |1 |2 |
|1 |{1 -> 2, 3 -> 4, 5 -> NULL}|1 |3 |4 |
|1 |{1 -> 2, 3 -> 4, 5 -> NULL}|2 |5 |NULL |
+---+---------------------------+---+---+-----+