如何在Azure Monitor日志中对列表元素执行Group by分组统计
解决方案
你可以使用Kusto查询语言的mv-expand运算符实现需求,它可以将数组类型的字段展开,数组中的每个元素都会单独生成一行记录,之后再按展开后的单个ID字段做聚合统计即可。
修改后的查询语句如下:
traces | where operation_Name contains "MyOperation" | where message contains "Trigger Details" | extend messageIdArray = extract("MessageIdArray: (.*?), ", 1, message) | extend messageIdList = split(messageIdArray, ",") // 展开ID数组,每个ID单独生成一行记录 | mv-expand messageId = messageIdList to typeof(string) // 按单个ID统计出现次数 | summarize occurences=count() by messageId | sort by occurences desc
补充优化点
- 如果ID可能存在前后空格,可在展开后增加修剪处理,避免同一个ID因格式问题被判定为不同值:
| extend messageId = trim(' ', messageId) - 如果只需要排查重复出现的ID,可在聚合后增加过滤条件:
| where occurences > 1
内容的提问来源于stack exchange,提问作者Tobb
相关产品推荐
相关产品推荐

