You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何使用KQL合并相同CorrelationId的AzureActivity日志行?

解决方案

针对你的场景,推荐使用**行号排名(row_number())**结合分区(partition by)的方式,精准筛选出每个CorrelationId对应的有效数据行。具体KQL查询如下:

AzureActivity
| project TimeGenerated, CorrelationId, Caller, Action, RoleId, ObjectId, Status  // 加入Status列用于判断行类型
| partition by CorrelationId (
    order by Status asc  // 让"Success"排在"Start"前面(字符串排序中Success优先级更高)
    | take 1  // 取每个CorrelationId下的第一行,即有效数据行
)

更直观的优先级指定写法:

如果担心字符串排序的不确定性,可以用case函数明确标记优先级:

AzureActivity
| project TimeGenerated, CorrelationId, Caller, Action, RoleId, ObjectId, Status
| extend Priority = case(Status == "Success", 1, Status == "Start", 2, 3)  // 给Success最高优先级
| partition by CorrelationId (
    order by Priority asc
    | take 1
)
| project-away Priority  // 移除临时优先级列

简化场景的快捷写法:

如果确认所有CorrelationId都同时存在Success和Start行,可以直接过滤Status为Success的行,写法更简洁:

AzureActivity
| where Status == "Success"
| project TimeGenerated, CorrelationId, Caller, Action, RoleId, ObjectId

注:这种方法会丢失仅存在Start行的CorrelationId数据,适合已确认数据完整性的场景。

内容的提问来源于stack exchange,提问作者Luca Dessauvagie

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.19 13:20:55