posexplode_outer

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