通过


TableValuedFunction.explode

返回一个数据帧,其中包含给定数组或映射中每个元素的新行。 对数组中的元素和keyvalue映射中的元素使用默认列名col,除非另有指定。

Syntax

spark.tvf.explode(collection)

参数

参数 类型 Description
collection pyspark.sql.Column 要处理的目标列。

退货

pyspark.sql.DataFrame:一个数据帧,其中包含每个元素的新行。

例子

示例 1:分解数组列

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

示例 2:分解地图列

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

示例 3:分解结构列数组

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

示例 4:分解空数组列

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

示例 5:分解空地图列

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