CloudWatch 查询连接具有相同 id 的两条记录

问题描述 投票:0回答:3

我有一个以下格式的cloudwatch日志

id 名字 城市
1 约翰
1 纽约
2 西雅图
2 迈克

我正在寻找一种方法来获取以下格式的日志数据,并结合空值和非空值

id 名字 城市
1 约翰 纽约
2 迈克 西雅图

如何使用 CloudWatch 日志过滤器查询来实现此目的?

amazon-cloudwatch amazon-cloudwatchlogs aws-cloudwatch-log-insights cloudwatch-alarms
3个回答
0
投票

我认为目前仅使用 CloudWatch 是不可能的。 日志洞察功能中没有任何东西可以做到这一点。

您可以尝试在 Athena 中分析日志,但这确实会增加成本和复杂性。您可以使用 CloudWatch / Athena 连接器,它可以让您使用 SQL 查询日志。或者,您可以将日志导出到 S3 以进行进一步分析。


0
投票

正如 @Ed Eastwood 所指出的,Cloudwatch 中没有内置的

join
功能可以让您轻松实现此目的。但是,您可以使用
stats
命令和
sortsFirst
sortsLast
命令来解决问题:

fields id, name, city
| stats count(*), sortsFirst(name), sortsFirst(city) by id

上面的命令将返回您想要的表格。无论你使用

但请注意,这仅在每列只有一个值且具有唯一 id 值的情况下才有效,因此它的工作方式与

join
的工作方式不同。


0
投票

这是一个示例查询,应该可以为您提供所需的输出:

fields @timestamp, id, name, city
| sort @timestamp desc
| stats latest(name) as name, latest(city) as city by id

我不能100%确定它是否有效,但我认为这会对你有所帮助。

© www.soinside.com 2019 - 2024. All rights reserved.