BigQuery: выберите самую последнюю из группы строк с полем типа ARRAY - PullRequest
0 голосов
/ 03 марта 2019

У меня есть таблица с 3 столбцами: String, Datetime, ARRAY ().

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)

Это результат, который я хочу:

Paul  | "2019-03-03T06:29:35" | (1, 3, 6, 8)
Anna  | "2019-03-03T02:29:35" | (1, 2, 3, 4)
Maya  | "2019-03-02T10:29:35" | (9, 11, 13, 8)

Я пыталсяиспользуйте GROUP BY с ARRAY_AGG, чтобы получить последнюю метку времени для каждого Имени, но это не работает, потому что GROUP BY нельзя использовать в поле типа ARRAY.

Как получить желаемый результат?Использование стандартного SQL.

1 Ответ

0 голосов
/ 03 марта 2019

Объединить в структуру с ARRAY_AGG, затем извлечь поля:

SELECT
  Name,
  ARRAY_AGG(
    STRUCT(LastLogin, FavoriteNumbers)
    ORDER BY LastLogin DESC LIMIT 1
  )[OFFSET(0)].*
FROM dataset.table
GROUP BY Name
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...