[英]Spark filter on dataframe with array containing a map
我有一个 dataframe 的架构,它有一个嵌套的 map 值数组:
root
|-- array_of_properties: array (nullable = true)
| |-- element: struct (containsNull = true)
| | |-- name: string (nullable = true)
| | |-- props: map (nullable = true)
| | | |-- key: string
| | | |-- value: string (valueContainsNull = true)
我需要过滤数组内 map 中的结构名称和一些特定键的值。 我可以过滤名称:
dataframe.filter(array_contains(col("array_of_properties.name"), "somename"))
如何在嵌套props
map 中的两个键的值上添加 AND 过滤器(例如,键名is_enabled
的 boolean 值为 true 或 false,键名source
的字符串值为test
)?
使用exists
function:
dataframe.filter("exists(array_of_properties, x -> x.name = 'somename' and x.props['is_enabled'] is true)")
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.