Not
Bu sayfaya erişim yetkilendirme gerektiriyor. Oturum açmayı veya dizinleri değiştirmeyi deneyebilirsiniz.
Bu sayfaya erişim yetkilendirme gerektiriyor. Dizinleri değiştirmeyi deneyebilirsiniz.
Verilen dizide veya eşlemede konumu olan her öğe için yeni bir satır döndürür. Posexplode'un aksine, dizi/eşleme null veya boşsa satır (null, null) oluşturulur. Konum ve dizideki poscol öğeler için ve key aksi belirtilmedikçe eşlemedeki öğeler için varsayılan sütun adını value kullanır.
Sözdizimi
from pyspark.sql import functions as sf
sf.posexplode_outer(col)
Parametreler
| Parametre | Türü | Description |
|---|---|---|
col |
pyspark.sql.Column veya sütun adı |
Üzerinde çalışacak hedef sütun. |
İade
pyspark.sql.Column: Dizi öğesi başına bir satır veya konumları ayrı sütun olarak içeren eşleme anahtarı değeri.
Örnekler
Örnek 1: Dizi sütunu kullanma
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.select('*', sf.posexplode_outer('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|
| 2| []|NULL|NULL|
| 3| NULL|NULL|NULL|
+---+---------------+----+----+
Örnek 2: Harita sütunu kullanma
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.select('*', sf.posexplode_outer('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 |
|2 |{} |NULL|NULL|NULL |
|3 |NULL |NULL|NULL|NULL |
+---+---------------------------+----+----+-----+