BigQuery:将多个字段聚合到数组中

apk*_*ith 7 google-bigquery

我有一些数据,对于每个ID,我想将两个或多个字段聚合到一个数组中,我希望它们在顺序方面匹配.

例如,如果我有以下数据:

在此输入图像描述

我想把它变成这个:

在此输入图像描述

或者,像这样的东西也可以:

在此输入图像描述

首先,如果我使用这样的查询,它会做我想要的,还是不能保证两个字段以相同的顺序通过(即Value_1和Value_2中的相应值可能不匹配)?

SELECT
  ID,
  ARRAY_AGG (
    Value_1
  ) AS Value_1,
  ARRAY_AGG (
    Value_2
  ) AS Value_2

FROM
  table

GROUP BY
  ID
Run Code Online (Sandbox Code Playgroud)

如果没有,我该怎么做呢?

Ell*_*ard 12

使用ARRAY_AGGSTRUCT如果要配对的值加在一起.例如,

SELECT
  ID,
  ARRAY_AGG (
    STRUCT(Value_1, Value_2)
  ) AS Values
FROM
  table
GROUP BY
  ID;
Run Code Online (Sandbox Code Playgroud)


Mik*_*ant 5

......以及你的问题alternative

SELECT  
  id,
  ARRAY_AGG(CONCAT('[', Value_1, ',', Value_2, ']')) AS Values
FROM `yourTable`
GROUP BY id
Run Code Online (Sandbox Code Playgroud)