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

Posted

技术标签:

【中文标题】数组聚合/集合 - 需要明确指定结构字段?【英文标题】:Array Aggregation / Collection - Need to specify struct fields explicitly? 【发布时间】:2019-07-04 16:14:58 【问题描述】:

那么在 BQ 标准 SQL 中,使用 ARRAY_AGG,是否总是需要指定 struct 字段?或者这可以是动态的结果(例如*)

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

我试图通过公共 id 将所有行收集到一个数组中,但我想在不明确定义的情况下轻松包含结构中的所有字段 - 这可能吗?

从此...

      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】:

以下是 BigQuery 标准 SQL

你可以使用下面来实现你的目标

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

【讨论】:

可能是有史以来最快的答案错过了明显的抱歉!

以上是关于数组聚合/集合 - 需要明确指定结构字段?的主要内容,如果未能解决你的问题,请参考以下文章

mongo 使用聚合合并字段

pandas使用groupby函数基于指定分组变量对dataframe数据进行分组使用min函数计算所有分组中指定数值变量的聚合最小值即字段在指定分组的最小值([]方括号指定需要计算的数值字段)

MongoDB——聚合管道之$project操作

MongoDB——聚合管道之$project操作

pandas使用groupby函数基于指定分组变量对dataframe数据进行分组使用mean函数计算所有分组中指定数值变量的聚合平均值即字段在指定分组的平均值([]方括号指定需要计算的数值字段)

pandas使用groupby函数基于指定分组变量对dataframe数据进行分组使用max函数计算所有分组中指定数值变量的聚合最大值即字段在指定分组的最大值([]方括号指定需要计算的数值字段)