posexplode

Verilen dizide veya eşlemede konumu olan her öğe için yeni bir satır döndürür. 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(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ütununu hızlandırma

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

Örnek 2: Harita sütununu büyütme

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