Nota
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare ad accedere o modificare le directory.
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare a modificare le directory.
Restituisce un dataframe contenente una nuova riga per ogni elemento nella matrice o nella mappa specificata. Il nome di colonna predefinito è col per gli elementi in una matrice e keyvalue per gli elementi in una mappa. Per usare nomi di colonna diversi, chiamare toDF() sul dataframe restituito.
Sintassi
spark.tvf.explode(collection)
Parametri
| Parametro | TIPO | Description |
|---|---|---|
collection |
pyspark.sql.Column |
Colonna di destinazione su cui lavorare. |
Restituzioni
pyspark.sql.DataFrame: dataframe con una nuova riga per ogni elemento.
Esempi
Esempio 1: esplodere una colonna di matrice
import pyspark.sql.functions as sf
spark.tvf.explode(sf.array(sf.lit(1), sf.lit(2), sf.lit(3))).show()
+---+
|col|
+---+
| 1|
| 2|
| 3|
+---+
Esempio 2: esplodere una colonna della mappa
import pyspark.sql.functions as sf
spark.tvf.explode(
sf.create_map(sf.lit("a"), sf.lit("b"), sf.lit("c"), sf.lit("d"))
).show()
+---+-----+
|key|value|
+---+-----+
| a| b|
| c| d|
+---+-----+
Esempio 3: esplodere una matrice di colonne struct
import pyspark.sql.functions as sf
spark.tvf.explode(sf.array(
sf.named_struct(sf.lit("a"), sf.lit(1), sf.lit("b"), sf.lit(2)),
sf.named_struct(sf.lit("a"), sf.lit(3), sf.lit("b"), sf.lit(4))
)).select("col.*").show()
+---+---+
| a| b|
+---+---+
| 1| 2|
| 3| 4|
+---+---+
Esempio 4: esplodere una colonna di matrice vuota
import pyspark.sql.functions as sf
spark.tvf.explode(sf.array()).show()
+---+
|col|
+---+
+---+
Esempio 5: esplodere una colonna mappa vuota
import pyspark.sql.functions as sf
spark.tvf.explode(sf.create_map()).show()
+---+-----+
|key|value|
+---+-----+
+---+-----+
Esempio 6: Override dei nomi di colonna predefiniti
Poiché spark.tvf.explode restituisce un dataframe, usare toDF() per rinominare le colonne di output.
.alias() non ha alcun effetto sulle colonne esplose.
import pyspark.sql.functions as sf
# Array: rename the single output column
spark.tvf.explode(sf.array(sf.lit(1), sf.lit(2), sf.lit(3))).toDF("number").show()
+------+
|number|
+------+
| 1|
| 2|
| 3|
+------+
# Map: rename both output columns
spark.tvf.explode(
sf.create_map(sf.lit("a"), sf.lit("b"), sf.lit("c"), sf.lit("d"))
).toDF("letter", "pair").show()
+------+----+
|letter|pair|
+------+----+
| a| b|
| c| d|
+------+----+