要选择具有ARRAY类型字段的组中的最新行,您可以使用BigQuery中的窗口函数和UNNEST函数来实现。以下是一个示例代码:
WITH data AS (
SELECT
group_id,
timestamp,
ARRAY_AGG(data ORDER BY timestamp DESC) AS data_array
FROM
your_table
GROUP BY
group_id
)
SELECT
group_id,
ARRAY(SELECT AS STRUCT * FROM UNNEST(data_array) LIMIT 1) AS latest_data
FROM
data
在这个例子中,我们首先使用GROUP BY子句将数据按group_id分组。然后,我们使用ARRAY_AGG函数将每个组中的数据按照timestamp降序排列,并将其存储为一个ARRAY类型的字段data_array
。
接下来,我们使用UNNEST函数将data_array
展开为多个行,并使用LIMIT 1来选择每个组中的最新行。最后,我们使用ARRAY函数将这些最新行重新组合为一个ARRAY类型的字段latest_data
。
请注意,此代码仅适用于具有ARRAY类型字段的情况。如果您的数据中没有ARRAY类型字段,可以省略ARRAY(SELECT AS STRUCT * FROM UNNEST(data_array) LIMIT 1)
,直接选择需要的字段即可。