首页 > 解决方案 > BigQuery如何订购嵌套和重复的列?

问题描述

我有一个表格,其中包含某种动物发生的事件,例如购买、死亡、出生等。许多事件发生在不同的日期,但有些事件发生在同一日期(格式 yyyy-mm-dd)。对于在同一日期发生的那些,有“event_id”列进行分类。我的问题是:如何为每个现有动物创建一个查询,该查询返回一个嵌套和重复的列,其中所有事件按日期 + ID 排序?

select animal,
array_agg(struct(event_id, event_date, event_name, event_etc, ...)) as event
from events
group by animal;

标签: google-bigquery

解决方案


ARRAY_AGG支持ORDER BY参考)。因此,您可以执行以下操作:

SELECT
  animal,
  ARRAY_AGG(
    STRUCT(
      event_id,
      event_date,
      event_name,
      ...
    ) ORDER BY event_date, event_id
  ) AS events
FROM events
GROUP BY animal;

推荐阅读