TableValuedFunction.explode

Mengembalikan DataFrame yang berisi baris baru untuk setiap elemen dalam array atau peta yang diberikan. Nama kolom default adalah col untuk elemen dalam array dan key dan value untuk elemen dalam peta. Untuk menggunakan nama kolom yang berbeda, panggil toDF() pada DataFrame yang dikembalikan.

Syntax

spark.tvf.explode(collection)

Parameter-parameternya

Pengaturan Tipe Description
collection pyspark.sql.Column Kolom target untuk dikerjakan.

Pengembalian Barang

pyspark.sql.DataFrame: DataFrame dengan baris baru untuk setiap elemen.

Examples

Contoh 1: Meledakkan kolom array

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

Contoh 2: Meledakkan kolom peta

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

Contoh 3: Meledakkan array kolom 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|
+---+---+

Contoh 4: Meledakkan kolom array kosong

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

Contoh 5: Meledakkan kolom peta kosong

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

Contoh 6: Mengganti nama kolom default

Karena spark.tvf.explode mengembalikan DataFrame, gunakan toDF() untuk mengganti nama kolom output. .alias() tidak berpengaruh pada kolom yang meledak.

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