You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

BigQuery中列含结构体时如何获取唯一行并生成指定表

解决方案

你可以通过GROUP BY子句按name分组,结合聚合函数来获取唯一的name及其对应的结构体数组,无需依赖DISTINCT(因为DISTINCT会对所有选中列做唯一性判断,结构体/数组类型通常无法直接参与这类判断)。

根据你的实际场景,有两种常见处理方式:

1. 同一name对应的结构体数组唯一

如果每个name对应的favoritePlayerHours结构体数组在所有行中完全一致,直接用ANY_VALUE函数提取该数组即可:

SELECT
  name,
  ANY_VALUE(favoritePlayerHours) AS favoritePlayerHours
FROM 你的表名
GROUP BY name

2. 同一name存在多个不同结构体数组,需合并

如果同一个name有多行不同的favoritePlayerHours数组,想要将它们合并为一个数组,可使用ARRAY_CONCAT_AGG:

SELECT
  name,
  ARRAY_CONCAT_AGG(favoritePlayerHours) AS favoritePlayerHours
FROM 你的表名
GROUP BY name

若你最终需要的是第一列为所有唯一name的数组,第二列为每个玩家对应结构体数组的集合,可以嵌套一层聚合实现:

SELECT
  ARRAY_AGG(DISTINCT name) AS unique_names,
  ARRAY_AGG(STRUCT(name, favoritePlayerHours)) AS player_structs
FROM (
  SELECT
    name,
    ANY_VALUE(favoritePlayerHours) AS favoritePlayerHours
  FROM 你的表名
  GROUP BY name
)

内容的提问来源于stack exchange,提问作者Makketronix

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.21 08:42:07