Google bigquery 列中的标准SQL和数组

Google bigquery 列中的标准SQL和数组,google-bigquery,bigquery-standard-sql,Google Bigquery,Bigquery Standard Sql,我有一个关于BigQuery(使用标准SQL)的问题 假设我有以下数据: Id Arrays 1 [1, 4] 2 [2] 1 [3, 4, 6, 91] 2 [0, 9, 1, 4, 0, 37] 我想将数组求和为以下输出: Id Arrays 1 [4, 8, 6, 91] 2 [2, 9, 1, 4, 0, 37] 每个数组中的元素数量可能不同。结果的顺序很重要 我考虑过标准SQL中的用户定义函数,但失败了 有谁能告诉我,使用标准SQL是否可以实现这一点?如

我有一个关于BigQuery(使用标准SQL)的问题

假设我有以下数据:

Id  Arrays
1   [1, 4]
2   [2]
1   [3, 4, 6, 91]
2   [0, 9, 1, 4, 0, 37]
我想将数组求和为以下输出:

Id  Arrays
1   [4, 8, 6, 91]
2   [2, 9, 1, 4, 0, 37]
每个数组中的元素数量可能不同。结果的顺序很重要

我考虑过标准SQL中的用户定义函数,但失败了

有谁能告诉我,使用标准SQL是否可以实现这一点?如果可以,如何实现

如果你能给我看一个示例代码,那就太好了。提前感谢。

这应该可以:

SELECT
  id, ARRAY_AGG(x ORDER BY idx) AS arrays
FROM (
  SELECT id, idx, SUM(x) AS x
  FROM table,
  UNNEST(arrays) AS x WITH OFFSET idx
  GROUP BY id, idx
)
GROUP BY id

它首先根据索引对数组元素求和,然后使用原始元素顺序重新聚合为数组。

谢谢,亲爱的朋友。这个解决方案对我来说非常简洁明了。我没有考虑在id和idx上使用额外的步骤求和。我将在今后牢记这一方针。