Google bigquery BigQuery:使用数组类型字段选择最近的一组行
我有一个包含3列的表:字符串、日期时间、数组Google bigquery BigQuery:使用数组类型字段选择最近的一组行,google-bigquery,Google Bigquery,我有一个包含3列的表:字符串、日期时间、数组 Name | LastLogin | FavoriteNumbers Paul | "2019-03-03T06:29:35" | (1, 3, 6, 8) Paul | "2019-03-03T02:29:35" | (1, 3, 6, 8) Paul | "2019-03-01T01:29:35" | (1, 3, 6, 8) Anna | "2019-03-03T02:29:35" | (1, 2, 3, 4)
Name | LastLogin | FavoriteNumbers
Paul | "2019-03-03T06:29:35" | (1, 3, 6, 8)
Paul | "2019-03-03T02:29:35" | (1, 3, 6, 8)
Paul | "2019-03-01T01:29:35" | (1, 3, 6, 8)
Anna | "2019-03-03T02:29:35" | (1, 2, 3, 4)
Anna | "2019-03-03T01:29:35" | (1, 2, 3, 4)
Maya | "2019-03-02T10:29:35" | (9, 11, 13, 8)
这就是我想要的结果:
我尝试使用GROUP BY with ARRAY_AGG来获取每个名称的最新时间戳,但它不起作用,因为GROUP BY不能用于数组类型字段
我怎样才能得到我想要的结果?使用标准SQL。使用ARRAY\u AGG聚合到结构中,然后提取字段:
SELECT
Name,
ARRAY_AGG(
STRUCT(LastLogin, FavoriteNumbers)
ORDER BY LastLogin DESC LIMIT 1
)[OFFSET(0)].*
FROM dataset.table
GROUP BY Name
在中有许多与您类似的问题,例如,如果您仍然需要帮助,请进行一些研究并分享您正在使用的最新SQL
SELECT
Name,
ARRAY_AGG(
STRUCT(LastLogin, FavoriteNumbers)
ORDER BY LastLogin DESC LIMIT 1
)[OFFSET(0)].*
FROM dataset.table
GROUP BY Name