pyspark.sql.functions.posexplode_outer

pyspark.sql.functions. posexplode_outer ( col : ColumnOrName ) → pyspark.sql.column.Column [source]

为给定数组或映射中的每个元素返回一行,包含其位置。 与posexplode不同,如果数组/映射为空或为null,则生成行(null, null)。 使用默认列名 pos 表示位置, col 表示数组中的元素, key value 表示映射中的元素,除非另有指定。

新增于版本 2.3.0。

在版本 3.4.0 中更改: 支持 Spark Connect。

Parameters
col Column or str

目标列以进行操作。

Returns
Column

每个数组项或映射键值一行,包括位置作为单独的列。

示例

>>> df = spark.createDataFrame(
...     [(1, ["foo", "bar"], {"x": 1.0}), (2, [], {}), (3, None, None)],
...     ("id", "an_array", "a_map")
... )
>>> df.select("id", "an_array", posexplode_outer("a_map")).show()
+---+----------+----+----+-----+
| id|  an_array| pos| key|value|
+---+----------+----+----+-----+
|  1|[foo, bar]|   0|   x|  1.0|
|  2|        []|NULL|NULL| NULL|
|  3|      NULL|NULL|NULL| NULL|
+---+----------+----+----+-----+
>>> df.select("id", "a_map", posexplode_outer("an_array")).show()
+---+----------+----+----+
| id|     a_map| pos| col|
+---+----------+----+----+
|  1|{x -> 1.0}|   0| foo|
|  1|{x -> 1.0}|   1| bar|
|  2|        {}|NULL|NULL|
|  3|      NULL|NULL|NULL|
+---+----------+----+----+