Anmerkung
Der Zugriff auf diese Seite erfordert eine Genehmigung. Du kannst versuchen, dich anzumelden oder die Verzeichnisse zu wechseln.
Der Zugriff auf diese Seite erfordert eine Genehmigung. Du kannst versuchen , die Verzeichnisse zu wechseln.
Gibt eine neue Zeile für jedes Element mit Position im angegebenen Array oder der angegebenen Abbildung zurück. Im Gegensatz zu posexplode wird die Zeile (NULL, NULL) erzeugt, wenn das Array/die Zuordnung null oder leer ist. Verwendet den Standardspaltennamen pos für die Position und col für Elemente im Array und keyvalue für Elemente in der Karte, sofern nicht anders angegeben.
Syntax
from pyspark.sql import functions as sf
sf.posexplode_outer(col)
Die Parameter
| Parameter | Typ | Description |
|---|---|---|
col |
pyspark.sql.Column oder Spaltenname |
Zielspalte, an der gearbeitet werden soll. |
Rückkehr
pyspark.sql.Column: eine Zeile pro Arrayelement oder Kartenschlüsselwert, einschließlich Positionen als separate Spalte.
Examples
Beispiel 1: Verwenden einer Arrayspalte
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|
+---+---------------+----+----+
Beispiel 2: Verwenden einer Kartenspalte
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 |
+---+---------------------------+----+----+-----+