Des*_* me 5 apache-spark apache-spark-sql
我有一个具有以下架构的数据框
我的要求是过滤与任何地址数组元素中的给定字段(如城市)匹配的行。我可以访问单个字段,例如loyaltyMember.address[0].city,但我必须检查所有地址数组元素以查看是否存在任何匹配项。我如何在 spark sql 中实现这一点,我无法使用 array_contains 函数,因为数组是复杂类型
root
|-- loyaltyMember: struct (nullable = true)
| |-- Name: string (nullable = true)
| |-- address: array (nullable = true)
| | |-- element: struct (containsNull = true)
| | | |-- addressType: string (nullable = true)
| | | |-- city: string (nullable = true)
| | | |-- countryCode: string (nullable = true)
| | | |-- postalCode: string (nullable = true)
| | | |-- street: string (nullable = true)
Run Code Online (Sandbox Code Playgroud)
Dav*_*rba 16
我相信你仍然可以使用array_contains如下(在 PySpark 中):
from pyspark.sql.functions import col, array_contains
df.filter(array_contains(col('loyaltyMember.address.city'), 'Prague'))
Run Code Online (Sandbox Code Playgroud)
这将过滤数组列city元素“布拉格”中的所有行。
| 归档时间: |
|
| 查看次数: |
13638 次 |
| 最近记录: |