指定された配列またはマップ内の各要素の新しい行を含む DataFrame を返します。 既定の列名は、配列内の要素に col され、マップ内の要素の key と value されます。 異なる列名を使用するには、返された DataFrame で toDF() を呼び出します。
構文
spark.tvf.explode(collection)
パラメーター
| パラメーター | タイプ | Description |
|---|---|---|
collection |
pyspark.sql.Column |
作業対象の列。 |
返品ポリシー
pyspark.sql.DataFrame: 各要素の新しい行を含む 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|
+---+-----+
+---+-----+
例 6: 既定の列名をオーバーライドする
spark.tvf.explodeは DataFrame を返すので、toDF()を使用して出力列の名前を変更します。
.alias() は分解列には影響しません。
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|
+------+----+