Google bigquery 列中的标准SQL和数组
我有一个关于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是否可以实现这一点?如
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上使用额外的步骤求和。我将在今后牢记这一方针。