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

Thi*_*ata 5 amazon-cloudwatch aws-cloudwatch-log-insights

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

我目前能够多次运行非常类似的查询,如下所示:

fields context
| filter context.time_to_prepare > 10
| count(*) as count_slow_time_to_prepare by bin(10m)
Run Code Online (Sandbox Code Playgroud)
fields context
| filter context.time_to_shine > 10
| count(*) as count_slow_time_to_shine by bin(10m)
Run Code Online (Sandbox Code Playgroud)

.. 每个属性一次查询

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

我希望这样的事情会起作用:

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)
Run Code Online (Sandbox Code Playgroud)

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

那么,有没有办法制作三元if呢?

Thi*_*ata 4

我已经很接近了,

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

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)
Run Code Online (Sandbox Code Playgroud)

的 True 和 False 变为a > b1 和 0,可用于 sum、avg 等分组函数。