Как управлять группой в AWS Cloud Watch Logs Insights - PullRequest
0 голосов
/ 27 февраля 2020

У меня есть записи 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 Ответ

1 голос
/ 28 февраля 2020

Вы можете использовать функцию агрегирования 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        |
---------------------------
...