如何在Log Analytics Kusto查询结果末尾添加总计行
KQL查询追加总计行实现方案
你使用的是Kusto查询语言(KQL,适用于Azure Log Analytics、Azure Data Explorer等日志查询场景),可以通过结果集拼接的方式实现末尾追加总计行,以下是两种可直接复用的写法:
基础写法(逻辑简单易读)
直接将原分组统计结果和全量请求统计结果通过union拼接,新增辅助排序字段保证总计行固定在结果末尾:
MyLog | summarize count = count() by responseCode | extend sortKey = 0 | union ( MyLog | summarize count = count() | extend responseCode = "total", sortKey = 1 ) | sort by sortKey asc | project-away sortKey
说明:
sortKey是仅用于排序的临时字段,排序完成后通过project-away移除,最终返回字段和原查询完全一致,仅在末尾新增total总计行。
性能优化写法(大数据量场景推荐)
基础写法会两次扫描MyLog原表,当日志数据量级很大时查询效率较低,可以通过materialize缓存分组统计的中间结果,总计行直接对分组结果求和,仅需扫描一次原表:
let statusStat = materialize( MyLog | summarize cnt = count() by responseCode ); statusStat | extend sortKey = 0 | union ( statusStat | summarize cnt = sum(cnt) | extend responseCode = "total", sortKey = 1 ) | sort by sortKey asc | project responseCode, count = cnt
执行后返回结果和预期格式完全一致:各响应状态码的计数在前,最后一行为全部请求的总计数。
内容的提问来源于stack exchange,提问作者Brandhout
相关产品推荐
相关产品推荐

