AWS CloudWatch Insights - 简单三元 IF 或一些类似函数

AWS CloudWatch Insights - Simple Ternary IF or some similar function

考虑到我的日志中有许多带有时间测量值的属性。我想计算它们中的每一个超过我的超时限制的次数,例如 10 秒。

我目前能够做到这一点 运行 很多次非常类似的查询:

fields context
| filter context.time_to_prepare > 10
| count(*) as count_slow_time_to_prepare by bin(10m)
fields context
| filter context.time_to_shine > 10
| count(*) as count_slow_time_to_shine by bin(10m)

.. 每个属性一个查询

如果我们可以在同一个查询中提取所有这些指标,那么绘图会更好、更容易。 要做到这一点,所缺少的只是一些三元运算符或类似的东西。

我希望这样的事情能奏效:

fields context
| filter context.total_time > 0
| stats sum(if(context.time_to_prepare > 10,1,0)) as slow_time_to_prepare,
|       sum(if(context.time_to_shine   > 10,1,0)) as slow_time_to_shine  ,
# .. one row for each attribute
|       sum(if(context.time_to_move    > 10,1,0)) as slow_time_to_move   by bin(10m)

但这没有用。 "if" 函数不存在。

那么,有什么方法可以做一个三元if吗?

我很接近,

这段代码应该可以完成工作:

fields context
| filter context.total_time > 0
| stats sum(context.time_to_prepare > 10) as slow_time_to_prepare,
|       sum(context.time_to_shine   > 10) as slow_time_to_shine  ,
# .. one row for each attribute
|       sum(context.time_to_move    > 10) as slow_time_to_move   by bin(10m)

a > b的True和False变成1和0可以用在sum,avg等分组函数中