我正在尝试编写一个KQL查询,以从附加到API Management示例的Application Insights请求日志中返回行。我希望在某个API名称满足以下两个条件时,为该API名称返回一行:
1.至少两次失败。(success =“False”)
1.总呼叫中至少有50%失败。
在下面的示例datatable中,我希望查询只返回一行“/API/person”,因为总共6次调用中有5次失败。不会有“/API/banner”的行,因为虽然总共有2个失败,但失败率小于50%。
到目前为止,我已经能够使用一个pivot来获得每个表的成功和失败总数。我更熟悉TSQL,会创建一个嵌套的子查询并过滤出结果。我的理解是,这种方法在KQL中不可用。
[![datatable(apiname:string, success:bool, timestamp:timespan)
\[
"/api/person", "True", time(00:00:00),
"/api/status", "True", time(00:00:24),
"/api/banner", "True", time(00:00:20),
"/api/banner", "True", time(00:00:19),
"/api/banner", "True", time(00:00:21),
"/api/banner", "False", time(00:00:22),
"/api/banner", "False", time(00:00:23),
"/api/person", "False", time(00:00:00),
"/api/person", "False", time(00:00:37),
"/api/person", "False", time(00:00:47),
"/api/person", "False", time(00:00:53),
"/api/person", "False", time(00:00:55),
\]
| project apiname, success
| evaluate pivot(success, count(tobool(success)))]
字符串
当前结果集:
x1c 0d1x的数据
我怀疑有一种方法可以在KQL中用不同的方法实现这一点。任何提示或建议将不胜感激。在此先谢谢您!
1条答案
按热度按时间62lalag41#
我希望在某个API名称满足以下两个条件时,为该API名称返回一行:
1.至少两次失败。(success =“False”)
1.总呼叫中至少有50%失败。
在下面的示例datatable中,我希望查询只返回“/API/person”的一行
你可以使用
count()
和countif()
aggregation函数。字符串
| apiname |
| ------------ |
| /api/person |