Как управлять группой в AWS Cloud Watch Logs Insights

У меня есть записи CWL, как показано ниже. Отображение записей в типе SQL для ясности

Name City
1     Chicago
2     Wuhan
3     Chicago
4     Wuhan
5     Los Angeles

Теперь я хочу получить результат ниже

City         Count
Chicago        2
Wuhan          2
Los Angeles    1

Есть ли способ убежать GROUP BY в CWL Insights.

Псевдо-запрос

Select Count(*), City From {TableName} GROUP BY City

1 ответ

Решение

Вы можете использовать функцию агрегирования count с byзаявление: https://docs.aws.amazon.com/AmazonCloudWatch/latest/logs/CWL_QuerySyntax.html

Вот полный пример для вашего случая, предполагая, что журналы содержат записи точно так же, как и в примере (регулярное выражение для названия города очень простое, вы можете его уточнить).

fields @timestamp, @message
| parse @message /^(?<number>\d+)\s+(?<city>[a-zA-Z\s]+)$/
| filter ispresent(city)
| stats count(*) by city

Результат:

---------------------------
|     city     | count(*) |
|--------------|----------|
| Chicago      | 2        |
| Wuhan        | 2        |
| Los Angeles  | 1        |
---------------------------
Другие вопросы по тегам