因此在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的结构模式。...
答案 0 :(得分:2)
以下是用于BigQuery标准SQL
您可以在下面使用它来实现您的目标
SELECT
MemberRoleId,
ARRAY_AGG (t)
FROM
Memberships t
GROUP BY
MemberRoleId