You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何用Spark SQL函数将相同ID对应的Qualifier列转为唯一值数组?

解决方法
  • 使用Spark SQL的collect_set聚合函数,它能按分组字段(ID)将对应Qualifier的唯一值收集成数组,完美匹配你的需求。

1. Spark SQL 语句写法

直接执行以下SQL即可:

SELECT 
    ID,
    collect_set(Qualifier) AS QualifierList
FROM 
    your_table_name
GROUP BY 
    ID

说明:

  • collect_set:自动去重并收集同一分组内的Qualifier值为数组
  • GROUP BY ID:确保按ID分组聚合,每个ID只生成一行结果

2. DataFrame API 写法(代码操作方式)

如果用DataFrame API实现,示例代码如下(Scala版本,Python逻辑一致):

import org.apache.spark.sql.functions.collect_set

val resultDF = originalDF
    .groupBy("ID")
    .agg(collect_set("Qualifier").alias("QualifierList"))

关于array_join的误区

array_join的作用是将已有的数组拼接成字符串,它不是聚合函数,无法实现按分组收集值的功能。你需要先通过聚合函数(如collect_set或collect_list,后者不去重)得到数组,再根据需求用array_join处理(如需转字符串)。

内容的提问来源于stack exchange,提问作者sasa

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.07 16:05:25