Как управлять группой в 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 |
---------------------------