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

ARRAY_AGG()是否保证稳定?即结果元素与输入顺序一致?

BigQuery ARRAY_AGG() 顺序稳定性的官方说明

结论:未指定ORDER BY时,官方不保证ARRAY_AGG()的输出顺序与输入一致

你测试中观察到的顺序保留只是BigQuery执行引擎在特定场景下的表现,属于未定义行为——也就是说,这种行为没有官方承诺,当查询逻辑发生变化(比如引入分区、并行计算、数据洗牌等操作)时,执行引擎可能会改变输出数组的元素顺序。

如果需要确保数组元素的顺序符合预期,必须显式使用ORDER BY子句约束ARRAY_AGG()的排序逻辑:

比如要按元素值升序排序:

SELECT ARRAY_AGG(x ORDER BY x) AS array_agg 
FROM UNNEST([20, 40, 50, 1, 2, 3]) AS x;

如果要严格保留原数组的输入顺序,可以借助WITH OFFSET追踪元素位置后排序:

SELECT ARRAY_AGG(x ORDER BY offset) AS array_agg 
FROM UNNEST([20, 40, 50, 1, 2, 3]) AS x WITH OFFSET;

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.06 19:20:11