TableValuedFunction.explode

Retourneert een DataFrame met een nieuwe rij voor elk element in de opgegeven matrix of kaart. De standaardkolomnaam is col voor elementen in een matrix en keyvalue voor elementen in een kaart. Als u verschillende kolomnamen wilt gebruiken, roept toDF() u het geretourneerde DataFrame aan.

Syntaxis

spark.tvf.explode(collection)

Parameterwaarden

Kenmerk Typologie Description
collection pyspark.sql.Column Doelkolom waaraan moet worden gewerkt.

Retouren

pyspark.sql.DataFrame: Een DataFrame met een nieuwe rij voor elk element.

Voorbeelden

Voorbeeld 1: Een matrixkolom uitploten

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

Voorbeeld 2: Een kaartkolom uitploten

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

Voorbeeld 3: Een matrix met structkolom uitploten

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

Voorbeeld 4: Een lege matrixkolom uitploten

import pyspark.sql.functions as sf
spark.tvf.explode(sf.array()).show()
+---+
|col|
+---+
+---+

Voorbeeld 5: Een lege kaartkolom uitploten

import pyspark.sql.functions as sf
spark.tvf.explode(sf.create_map()).show()
+---+-----+
|key|value|
+---+-----+
+---+-----+

Voorbeeld 6: de standaardkolomnamen overschrijven

Omdat spark.tvf.explode een DataFrame wordt geretourneerd, kunt u toDF() de naam van de uitvoerkolommen wijzigen. .alias() heeft geen effect op de uitgeplode kolommen.

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