【问题标题】: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....显式定义结构模式。

【问题讨论】:

    标签: google-bigquery


    【解决方案1】:

    以下是 BigQuery 标准 SQL

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

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

    【讨论】:

    • 可能是有史以来最快的答案错过了明显的抱歉!
    猜你喜欢
    • 2019-01-30
    • 1970-01-01
    • 1970-01-01
    • 2022-09-23
    • 1970-01-01
    • 1970-01-01
    • 2017-10-27
    • 2010-12-20
    • 1970-01-01
    相关资源
    最近更新 更多