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

BigQuery中如何在单次聚合操作中合并数组并保留唯一值?

单次聚合实现数组去重合并与数值求和

你可以用array_concat_agg配合array_distinct,在一次GROUP BY操作里同时完成数组去重合并和y字段求和,无需拆成两个子查询再关联,优化后的SQL如下:

WITH source AS (
  SELECT [1, 2, 3, 4] AS x, 10 AS y, 'john' AS name
  UNION ALL 
  SELECT [3, 4, 5, 6], 3.3, 'john'
  UNION ALL 
  SELECT [7, 8, 9], 12.7, 'jacob'
)
SELECT 
  name,
  array_distinct(array_concat_agg(x)) AS distinct_x_array,
  SUM(y) AS sum_y
FROM source
GROUP BY name

逻辑说明:

  • array_concat_agg(x):将同一个name对应的所有x数组拼接成一个包含重复元素的大数组
  • array_distinct(...):对拼接后的大数组去重,最终得到和原查询中array_agg(distinct x)完全一致的唯一值数组
  • SUM(y):直接对每个name的y字段求和,逻辑与原查询完全匹配

执行后得到的结果和你原来的查询结果完全相同。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.17 21:22:36