如何在 AWS Cloud Watch Logs Insights 中 运行 分组
How to run a group by in 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
有什么方法可以让我在 CWL Insights 中 运行 GROUP BY
。
伪查询
Select Count(*), City From {TableName} GROUP BY City
您可以将聚合函数 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 |
---------------------------
我有如下 CWL 条目。显示 SQL 中的条目 为清楚起见键入
Name City
1 Chicago
2 Wuhan
3 Chicago
4 Wuhan
5 Los Angeles
现在我想要低于输出
City Count
Chicago 2
Wuhan 2
Los Angeles 1
有什么方法可以让我在 CWL Insights 中 运行 GROUP BY
。
伪查询
Select Count(*), City From {TableName} GROUP BY City
您可以将聚合函数 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 |
---------------------------