gpt4 book ai didi

amazon-web-services - CloudWatch Insights 查询 - 如何从计数中获取单个计数

转载 作者:行者123 更新时间:2023-12-03 17:12:32 26 4
gpt4 key购买 nike

我有一个包含 playerId 值的日志文件,一些玩家在文件中有多个条目。我想获得唯一玩家的确切不同计数,无论他们在日志文件中是否有 1 个或多个条目。

使用下面的查询扫描 497 条记录并找到 346 条唯一行(346 是我想要的数字)
询问:

fields @timestamp, @message
| sort @timestamp desc
| filter @message like /(playerId)/
| parse @message "\"playerId\": \"*\"" as playerId
| stats count(playerId) as CT by playerId

497 records 346 rows

如果我将查询更改为使用 count_distinct,我就会得到我想要的。下面的例子:
fields @timestamp, @message
| sort @timestamp desc
| filter @message like /(playerId)/
| parse @message "\"playerId\": \"*\"" as playerId
| stats count_distinct(playerId) as CT

with count_distinct function

然而,count_distinct 的问题在于,随着查询扩展到更大的时间范围/更多记录,条目数量会达到数千甚至数万。由于 Insights count_distinct 行为的性质,当数字变为近似值时,这会带来一个问题......

“返回字段唯一值的数量。如果该字段具有非常高的基数(包含许多唯一值),则 count_distinct 返回的值只是一个近似值。”。

文档: https://docs.aws.amazon.com/AmazonCloudWatch/latest/logs/CWL_QuerySyntax.html

这是 Not Acceptable ,因为我需要确切的数字。稍微玩一下查询,并坚持使用 count(),而不是 count_distinct() 我相信这是答案,但是我无法得出一个数字......不起作用的例子......任何想法?

例 1:
fields @timestamp, @message
| sort @timestamp desc
| filter @message like /(playerId)/
| parse @message "\"playerId\": \"*\"" as playerId
| stats count(playerId) as CT by playerId
| stats count(*)

我们在理解查询时遇到问题。

需要明确的是,我正在寻找在显示数字的单行中返回的确切计数。

最佳答案

如果我们引入一个硬编码为“1”的虚拟字段会怎样?这个想法是检索它的最小值,以便它保持为“1”,即使相同 playerId发生不止一次。然后我们总结这个领域。

日志条目可能如下所示:

[1]"playerId": "1b45b168-00ed-42fe-a977-a8553440fe1a"

询问:
fields @timestamp, @message
| sort @timestamp desc
| filter @message like /(playerId)/
| parse @message "[*]\"playerId\": \"*\"" as dummyValue, playerId
| stats sum(min(dummyValue)) by playerId as CT

使用的引用资料:
  • https://docs.aws.amazon.com/AmazonCloudWatch/latest/logs/CWL_AnalyzeLogData_AggregationQuery.html
  • https://docs.aws.amazon.com/AmazonCloudWatch/latest/logs/CountOccurrencesExample.html
  • 关于amazon-web-services - CloudWatch Insights 查询 - 如何从计数中获取单个计数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59827013/

    26 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com