我正在尝试合并数据集中的数据,如下所示:
sms 和 longDescription 具有以下结构:
sms:array
|----element:struct
|----content:string
|----languageId:string
目的是捕获具有相同Id的数据,并将sms
和longDescription
列合并到一个具有多个结构体的数组中(以languageID
为键):
我尝试过使用
x = df.select("*").groupBy("id").agg( collect_list("sms"))
但结果是:
collect_list(longDescription): array (nullable = false)
| |-- element: array (containsNull = false)
| | |-- element: struct (containsNull = true)
| | | |-- content: string (nullable = true)
| | | |-- languageId: string (nullable = true)
这是一个太多的数组,因为目标是拥有一个结构数组以获得以下结果:
sms: [{content: 'aze', languageId:'en-GB'},{content: 'rty', languageId:'fr-BE'},{content: 'poiu', languageId:'nl-BE'}]
最佳答案
您正在寻找flatten
功能:
x = df.groupBy("id").agg(flatten(collect_list("sms")))
关于arrays - 将列与多行数组合并,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/70787929/