如何在Kusto查询中获取3个失败请求的Sample Span ID
修改后的Kusto查询语句
logsTable | where timestamp > ago(1h) | summarize allCount=count(), okCount=sumif(1, success == "True"), sampleSpanId=strcat_array(take(make_set_if(spanId, success != "True"), 3), ", ") by name | extend okRate=round(todouble(okCount*100)/allCount, 4) | project name, sampleSpanId, okRate
关键修改说明
- 替换
take_anyif为多值收集逻辑:原语句用take_anyif只能获取单个失败Span ID,现在通过以下组合实现多值收集:- make_set_if(spanId, success != "True"):收集当前服务(按
name分组)下所有失败请求的唯一Span ID,自动去重 - take(..., 3):从收集到的唯一Span ID中截取最多3个
- strcat_array(..., ", "):将数组格式的Span ID转为逗号分隔的字符串,符合需求的输出格式
- make_set_if(spanId, success != "True"):收集当前服务(按
- 保留原有统计逻辑:
allCount、okCount和okRate的计算逻辑完全保留,确保成功率统计不受影响 - 兼容无失败场景:如果某个服务没有失败请求,
sampleSpanId会返回空字符串,和原逻辑的null表现一致(可根据需要用coalesce转为指定默认值)
内容的提问来源于stack exchange,提问作者Sten Petrov
相关产品推荐
相关产品推荐

