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

Azure中如何通过KQL union跨两个Log Analytics工作区获取全量行

核心原因

KQL的union算子默认使用kind=distinct模式,会自动移除所有字段值完全一致的重复行,不受数据来源的工作区限制。当两个工作区的ADFPipelineRun表中存在字段完全相同的失败记录时,就会被默认去重,最终导致统计结果比分别求和少20%。

解决方案

将union算子显式指定为kind=inner模式,该模式会保留所有输入源的所有行,不会执行去重逻辑。

基础修正版查询

ADFPipelineRun // 对应工作区A的ADFPipelineRun表
| union kind=inner workspace("<WorkspaceID for workspace B>").ADFPipelineRun 
| where Status == "Failed"
| where TimeGenerated > ago(90d)
| summarize CountFailed=count()

性能优化版查询

建议先对每个工作区的表做条件过滤,再执行union操作,能大幅减少跨工作区的数据传输量,提升查询效率:

// 先筛选工作区A的符合条件记录
ADFPipelineRun
| where Status == "Failed"
| where TimeGenerated > ago(90d)
| union kind=inner (
    // 同步筛选工作区B的符合条件记录
    workspace("<WorkspaceID for workspace B>").ADFPipelineRun 
    | where Status == "Failed"
    | where TimeGenerated > ago(90d)
)
| summarize CountFailed=count()

可选:区分工作区统计结果

如果需要同时查看两个工作区各自的失败数量,可以增加withsource参数标记数据来源:

ADFPipelineRun
| where Status == "Failed"
| where TimeGenerated > ago(90d)
| union withsource=SourceWorkspace kind=inner (
    workspace("<WorkspaceID for workspace B>").ADFPipelineRun 
    | where Status == "Failed"
    | where TimeGenerated > ago(90d)
)
| summarize CountFailed=count() by SourceWorkspace

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.07 05:36:02