如何让CloudWatch Log Insights的count_distinct()无日志时返回0?
解决CloudWatch Log Insights count_distinct无匹配时返回0的问题
默认情况下,当你的filter语句没有匹配到任何日志记录时,后续的stats不会输出任何结果。要实现无匹配时返回0,可以通过union拼接默认结果的方式处理,具体修改后的查询语句如下:
fields @message | filter method= "Login" AND ispresent(accountLocked) | stats count_distinct(userID) as distinctUsers | union (stats 0 as distinctUsers) | stats max(distinctUsers) as distinctUsers
逻辑说明:
- 前3行保留你原有的查询逻辑,统计符合条件的去重
userID数量并命名为distinctUsers。如果有匹配日志,这一步会输出真实计数值;无匹配时则无输出。 union语句拼接一个返回固定值0的统计结果,确保无论原查询是否有输出,都会至少存在一行数据。- 最后一行用
max(distinctUsers)取两个结果中的最大值:如果原查询有真实计数(大于0),就保留真实值;如果原查询无输出,就取union传入的0。
内容的提问来源于stack exchange,提问作者Kendy Alvarado
相关产品推荐
相关产品推荐

