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

如何在Athena中将同一ID的多行值合并为逗号分隔的单行

在Athena中合并同一ID的多行值为逗号分隔字符串

Athena基于Presto引擎,直接用聚合函数+数组拼接就能实现需求,核心是两个函数的组合:

  • collect_list(column):把同一分组下的列值收集成数组(保留重复值,顺序和原始数据一致)
  • collect_set(column):和collect_list类似,但会自动去重
  • array_join(array, separator):把数组元素用指定分隔符拼接成字符串

基础示例(保留重复值)

假设你的表名为target_table,包含id和target_column两列,执行以下SQL:

SELECT
  id,
  array_join(collect_list(target_column), ', ') AS combined_values
FROM target_table
GROUP BY id

去重版本

如果需要合并时自动去掉重复的取值,把collect_list换成collect_set即可:

SELECT
  id,
  array_join(collect_set(target_column), ', ') AS combined_values
FROM target_table
GROUP BY id

额外优化:指定排序

如果希望合并后的字符串按特定顺序排列,可以在collect_list里加排序规则:

SELECT
  id,
  array_join(collect_list(target_column ORDER BY target_column ASC), ', ') AS combined_values
FROM target_table
GROUP BY id

注意事项

  • 如果原始列存在NULL值,collect_list会将其纳入数组,array_join会把NULL转为空字符串;如果要过滤NULL,可以先加WHERE target_column IS NOT NULL
  • 数组拼接后的字符串长度受Athena的字符串长度限制,极端大量数据场景需要注意

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.24 18:44:53