如何查询不同于AWS日志洞察的

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

我需要使用 AWS Cloudwatch 日志见解从 lambda 查询数据。 aws提供的查询语法没有区别。

仅支持(count_distinct(fieldname))

参考。 https://docs.aws.amazon.com/AmazonCloudWatch/latest/logs/CWL_QuerySyntax.html

示例数据

列#@timestamp@message

1 2020-02-17T13:33:29.049+07:00 [INFO] 2020 分区键:ABC12345_A_

2 2020-02-17T11:32:29.049+07:00 [INFO] 2020 分区键:ABC12345_B_

3 2020-02-17T11:31:29.049+07:00 [INFO] 2020 分区键:ABC12345_B_

4 2020-02-17T11:30:29.049+07:00 [INFO] 2020 分区键:ABC12345_C_

5 2020-02-17T11:29:29.049+07:00 [INFO] 2020 分区键:ABC12345_A_

预期结果

1 2020-02-17T13:33:29.049+07:00 [INFO] 2020 分区键:ABC12345_A_

2 2020-02-17T11:32:29.049+07:00 [INFO] 2020 分区键:ABC12345_B_

4 2020-02-17T11:30:29.049+07:00 [INFO] 2020 分区键:ABC12345_C_

如果使用正常的 SQL 语法如下所示。

选择distinct(uuid)作为uuid,max(time)作为时间 从 table_name 按 uuid 分组 按时间 desc

amazon-web-services amazon-cloudwatch aws-cloudwatch-log-insights
3个回答
33
投票

你可以使用

| stats count(*) by fieldname

这允许在

fieldname
中列出不同的值。


15
投票

您可以在统计命令中使用非聚合函数,如下所示

stats latest(@timestamp) as @latestTimestamp by @message
| display @latestTimestamp, @message

0
投票

您现在可以使用

dedup
关键字删除重复项。

fields @timestamp, @message, order_id
| sort @timestamp desc 
| dedup order_id

据我所知,它必须是查询中的最后一个运算符。

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