如何从 StructType 数组中删除元素?
Posted
技术标签:
【中文标题】如何从 StructType 数组中删除元素?【英文标题】:How to remove elements from Array of StructType? 【发布时间】:2021-10-23 21:05:40 【问题描述】:我有一个架构
-- item: array (nullable = true)
| |-- element: struct (containsNull = true)
| | |-- key: string (nullable = true)
| | |-- type: string (nullable = true)
| | |-- one: string (nullable = true)
| | |-- two: boolean (nullable = true)
| | |-- three: long (nullable = true)
-
我想为数组中的每个键创建一个新列,它的值应该基于类型(如果 item.type = "one",那么该键的值将是 element.one)
如果它的键等于“电子”,我想从数组中删除 struct(item)
【问题讨论】:
要将结构数组分解为列,您可以使用inline,即df.selectExpr("inline(item)")
【参考方案1】:
无法准确理解您想要什么,但就像 Kafels 所说,您可以使用 inline 将结构数组分解为行(数组中的每个元素一个)和列,然后您将拥有以下架构:
-- key: string (nullable = true)
-- type: string (nullable = true)
-- one: string (nullable = true)
-- two: boolean (nullable = true)
-- three: long (nullable = true)
然后用df.filter(col("item") != "electronic")
过滤“电子”项目
【讨论】:
以上是关于如何从 StructType 数组中删除元素?的主要内容,如果未能解决你的问题,请参考以下文章