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

BigQuery重复字段聚合:如何按clientid分组统计嵌套数组metric.value汇总

BigQuery嵌套数组聚合操作方法

你给出的结构里,m.metric属于数组类型字段,每个元素包含key和value属性,按clientid分组聚合value可以通过以下两种常用方式实现:

方式1:先拆分数组再分组聚合

如果需要对所有value做跨数组的全局聚合,可以先用UNNEST将数组拆分为单行数据,再做分组计算:

SELECT
  clientid,
  SUM(metric.value) AS total_value, -- 求和,可替换为AVG/MAX/COUNT等聚合函数
  AVG(metric.value) AS avg_value,
  MAX(metric.value) AS max_value
FROM
  `你的项目名.你的数据集名.你的表名`,
  UNNEST(m.metric) AS metric
GROUP BY
  clientid

方式2:子查询内处理数组(保留原行结构)

如果不需要拆分原表行,可以直接在子查询中处理每行的数组,同一个clientid有多行记录时,先合并所有数组再聚合:

SELECT
  clientid,
  -- 先合并同clientid的所有metric数组,再计算value总和
  (SELECT SUM(value) FROM UNNEST(ARRAY_CONCAT_AGG(m.metric))) AS total_value
FROM
  `你的项目名.你的数据集名.你的表名`
GROUP BY
  clientid

注意事项

  • 聚合函数默认忽略value为NULL的项,需要统计NULL项时可以用IFNULL(metric.value, 自定义默认值)做预处理
  • 仅需要统计满足特定key的value时,可以在UNNEST后加WHERE条件过滤,比如WHERE metric.key = 10

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.06 09:12:03