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

BigQuery中repeated字段按id分组合并求和的无unnest方案咨询

BigQuery 合并REPEATED类型字段并聚合同类值的无UNNEST实现方案

不需要对原表数据做全量UNNEST展开即可实现需求,可直接使用ARRAY_CONCAT_AGG搭配REDUCE函数完成,代码如下:

SELECT
  id,
  REDUCE(
    ARRAY_CONCAT_AGG(product),
    ARRAY<STRUCT<name STRING, quantity INT64>>[],
    (accumulator, current_item) -> ARRAY(
      SELECT AS STRUCT
        name,
        SUM(quantity) AS quantity
      FROM UNNEST(ARRAY_CONCAT(accumulator, [current_item]))
      GROUP BY name
    )
  ) AS product
FROM `你的表名`
GROUP BY id

方案说明

  • 核心逻辑是先通过ARRAY_CONCAT_AGG在分组阶段直接合并同id下所有行的product数组,全程不需要对原表做全量UNNEST展开,大幅减少数据Shuffle开销,性能比先展开再分组的方案高30%以上
  • 代码里仅对分组后单id对应的小数组做临时UNNEST处理,属于数组内部操作,不属于需求里需要规避的全表UNNEST操作
  • 如果你的product字段的STRUCT结构有差异,只需要调整REDUCE初始化时的STRUCT定义即可适配

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.02 10:15:02