通过


TableValuedFunction.inline

将结构数组分解为一个表。

此函数采用一个包含结构数组的输入列,并返回一个新列,其中数组中的每个结构将分解为一个单独的行。

Syntax

spark.tvf.inline(input)

参数

参数 类型 Description
input pyspark.sql.Column 要分解的值的输入列。

退货

pyspark.sql.DataFrame:具有分解结构行的数据帧。

例子

示例 1:将内联与单个结构数组配合使用

import pyspark.sql.functions as sf
spark.tvf.inline(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))
)).show()
+---+---+
|  a|  b|
+---+---+
|  1|  2|
|  3|  4|
+---+---+

示例 2:将内联与空结构数组列结合使用

import pyspark.sql.functions as sf
spark.tvf.inline(sf.array().astype("array<struct<a:int,b:int>>")).show()
+---+---+
|  a|  b|
+---+---+
+---+---+

示例 3:将内联与包含 null 值的结构数组列一起使用

import pyspark.sql.functions as sf
spark.tvf.inline(sf.array(
    sf.named_struct(sf.lit("a"), sf.lit(1), sf.lit("b"), sf.lit(2)),
    sf.lit(None),
    sf.named_struct(sf.lit("a"), sf.lit(3), sf.lit("b"), sf.lit(4))
)).show()
+----+----+
|   a|   b|
+----+----+
|   1|   2|
|NULL|NULL|
|   3|   4|
+----+----+