数组聚合/集合-需要明确指定结构字段吗?

时间:2019-07-04 16:14:58

标签: google-bigquery

因此在BQ standardSQL中,使用ARRAY_AGG,是否始终需要指定struct字段?或者结果可以是动态的(例如*)

例如memberRoleId在Memberships表中可以有多个成员资格(即memberRoleId重复),我想创建一个所有值的数组作为结构,而无需指定列表,因为它的表很长很宽!

我正在尝试通过公共ID将所有行收集到一个数组中,但是我想在不明确定义的情况下轻松地将所有字段包括在sturct中吗?

从这里...

      MemberRoleId,
      ARRAY_AGG (
        STRUCT( 
           MemberRoleId, MembershipId, MemberPartyId, MemberRoleId......     
        )
      )
    FROM
      Memberships
    GROUP BY
      MemberRoleId

类似于下面的内容,带有*只是说我希望将与分组的MemberRoleId匹配的所有行列都放在结构中

      MemberRoleId,
      ARRAY_AGG (
        STRUCT( 
           * 
        )
      )
    FROM
      Memberships
    GROUP BY
      MemberRoleId

MemberRoleId,[{{MemberRoleId,x,x,x,x,x,x,x},{MemberRoleId,y,y,y,y,y,y,y}]

但不必显式定义数组agg的结构模式。...

1 个答案:

答案 0 :(得分:2)

以下是用于BigQuery标准SQL

您可以在下面使用它来实现您的目标

SELECT
  MemberRoleId,
  ARRAY_AGG (t)
FROM
  Memberships t
GROUP BY
  MemberRoleId