メインコンテンツまでスキップ

テーブル値関数.explode

指定された配列またはマップの各要素に対応する新しい行を含むDataFrameを返します。配列内の要素の場合、デフォルトの列名はcol 、マップ内の要素の場合はkeyvalueです。異なる列名を使用するには、返された DataFrame に対してtoDF()を呼び出します。

構文

Python
spark.tvf.explode(collection)

パラメーター

パラメーター

Type

説明

collection

pyspark.sql.Column

取り組むターゲットカラム。

戻り値

pyspark.sql.DataFrame: 要素ごとに新しい行を持つ DataFrame。

例1 : 配列の列を展開する

Python
import pyspark.sql.functions as sf
spark.tvf.explode(sf.array(sf.lit(1), sf.lit(2), sf.lit(3))).show()
Output
+---+
|col|
+---+
| 1|
| 2|
| 3|
+---+

例2 : マップ列の展開

Python
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()
Output
+---+-----+
|key|value|
+---+-----+
| a| b|
| c| d|
+---+-----+

例3 :構造体列の配列を展開する

Python
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()
Output
+---+---+
| a| b|
+---+---+
| 1| 2|
| 3| 4|
+---+---+

例4 : 空の配列列を展開する

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

例5 : 空のマップ列を展開する

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

例6 :デフォルトの列名を上書きする

spark.tvf.explode DataFrame を返すため、 toDF()を使用して出力列の名前を変更します。.alias()は展開された列には影響を与えません。

Python
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()
Output
+------+
|number|
+------+
| 1|
| 2|
| 3|
+------+
Python
# 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()
Output
+------+----+
|letter|pair|
+------+----+
| a| b|
| c| d|
+------+----+