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

如何让KQL时序图双折线重叠以分析异常?

解决KQL双折线同图不重叠的问题

问题核心是两个表的统计计数量级差异过大,导致折线分布在图表的不同区域,无法直观对比趋势。以下是两种实用的解决方法:

方法1:数值归一化(推荐,直接实现折线重叠)

将两个系列的计数缩放到0-1的范围,这样趋势对比更直观:

// 合并两个表并标记数据来源类型
union 
(
    AADNonInteractiveUserSignInLogs
    | where UserPrincipalName == "USER_HERE"
    | where TimeGenerated >= ago(120d)
    | project TimeGenerated, Type = "SignInLogs"
),
(
    BehaviorAnalytics
    | where AccountName == "USER_HERE" // 注意字段名可能需根据实际调整,比如UserPrincipalName
    | where TimeGenerated >= ago(120d)
    | project TimeGenerated, Type = "BehaviorAnalytics"
)
// 按类型和日期聚合计数
| summarize DailyCount = count() by Type, bin(TimeGenerated, 1d)
// 计算每个类型的最大计数,用于归一化
| extend MaxCount = max(DailyCount) over (partition by Type)
// 归一化到0-1范围
| extend NormalizedCount = DailyCount / MaxCount
// 渲染折线图,使用归一化后的值
| render timechart with (title="用户120天行为趋势对比(归一化)", yaxis="归一化计数(0-1)")

方法2:保留原始数值但使用双Y轴(可选,保留真实量级)

如果需要保留原始计数的同时对比趋势,可以用双Y轴布局:

union 
(
    AADNonInteractiveUserSignInLogs
    | where UserPrincipalName == "USER_HERE"
    | where TimeGenerated >= ago(120d)
    | project TimeGenerated, Type = "SignInLogs"
),
(
    BehaviorAnalytics
    | where AccountName == "USER_HERE"
    | where TimeGenerated >= ago(120d)
    | project TimeGenerated, Type = "BehaviorAnalytics"
)
| summarize DailyCount = count() by Type, bin(TimeGenerated, 1d)
// 渲染时指定双Y轴
| render timechart with (title="用户120天行为趋势对比(双Y轴)", yaxis=dynamic(["SignInLogs计数", "BehaviorAnalytics计数"]))

关键说明

  • 注意两个表中用户字段可能不同:AADNonInteractiveUserSignInLogs用UserPrincipalName,BehaviorAnalytics可能用AccountName或UserPrincipalName,需根据实际数据调整。
  • 归一化方法会丢失真实计数的量级,但能清晰对比趋势的波动异常,适合异常分析场景。
  • 如果某类数据某天没有记录,会自动补0,确保折线连续。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.24 03:22:42