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

如何编写Kusto查询展示WVD连接用户数及无连接时段(显示0)

Kusto查询:展示包含无连接时段的WVD用户连接数时间图

以下查询会生成连续时间轴,统计每个时间区间内的活跃用户数,同时自动填充无连接时段的0值:

// 自定义时间范围和统计粒度
let start_time = ago(7d); // 可修改为目标起始时间,比如ago(24h)
let end_time = now();
let time_granularity = 1m; // 可调整粒度,如5m、1h等

// 步骤1:配对每个用户的完整会话起止时间
let session_periods = WVDConnections
| where SessionStatus in ("Started", "Completed")
| sort by User, DateTime asc
| scan declare(session_active:bool=false) with (
    // 识别会话开始事件
    step start_session: session_active == false and SessionStatus == "Started" => 
        session_active = true, 
        StartTime = DateTime;
    // 匹配对应会话的结束事件
    step end_session: session_active == true and SessionStatus == "Completed" => 
        session_active = false, 
        EndTime = DateTime;
)
// 处理未结束的会话(用当前时间作为临时结束时间)
| extend EndTime = coalesce(EndTime, now())
| where isnotnull(StartTime)
| project User, StartTime, EndTime;

// 步骤2:生成无间断的连续时间轴
let time_axis = generate_series(start_time, end_time, time_granularity)
| rename TimeBin = value;

// 步骤3:计算各区间活跃用户数并填充0值
time_axis
| join kind=leftouter (
    session_periods
    | join kind=inner time_axis on $left.StartTime <= $right.TimeBin and $left.EndTime >= $right.TimeBin
    | summarize ActiveUsers = dcount(User) by TimeBin
) on TimeBin
| project TimeBin, ActiveUsers = coalesce(ActiveUsers, 0)
| sort by TimeBin asc

关键说明:

  • 会话配对:通过scan操作精准关联每个用户的Started与对应Completed事件,确保会话起止时间准确;未断开的会话自动以当前时间作为结束节点。
  • 连续时间轴:使用generate_series创建覆盖目标范围的无间断时间区间,解决原有查询遗漏无连接时段的问题。
  • 0值填充:通过leftouter连接和coalesce函数,将无活跃用户的时段数值设为0,保证时间图的连续性。
  • 粒度调整:修改time_granularity参数可切换统计粒度,比如1h按小时统计,5m按5分钟统计。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.27 02:33:23