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

Kusto中如何按员工分组计算相邻事件的经过时长?

Kusto 按用户分组计算相邻事件间隔实现方案

该需求可以直接实现,只需要调整排序逻辑并为next()函数指定分组范围即可,以下是修正后的查询语句:

let T = datatable(EmpId:string , Terminal:string, TimeStamp:datetime )
[
   "1", "A", datetime(2021-11-16 05:00:15),
   "2", "B", datetime(2021-11-16 05:00:15),
   "1", "B", datetime(2021-11-16 06:05:00),
   "1", "A", datetime(2021-11-16 08:00:15),
   "2", "B", datetime(2021-11-16 11:00:15),
   "2", "C", datetime(2021-11-16 09:00:15),
];
T   
    | order by EmpId asc, TimeStamp asc
    | extend elapsedTime = datetime_diff('minute', next(TimeStamp, 1, EmpId), TimeStamp)
    | summarize 
        Terminal = strcat_array(make_list(Terminal), "->"), 
        TimeStamp = strcat_array(make_list(TimeStamp), "->"),  
        TimeSpentinMins = strcat_array(make_list_if(elapsedTime, isnotnull(elapsedTime)), "->") 
    by EmpId

核心修改说明

  • 排序逻辑调整:将原来的全局按时间排序,改为先按EmpId排序、同用户内再按TimeStamp升序排序,保证同一用户的所有记录连续且时序正确
  • next()函数限定分组:调用next(TimeStamp, 1, EmpId)时,第三个参数指定仅在同一个EmpId的分组内获取下一条记录的时间,不会跨用户读取数据
  • 过滤无效间隔:使用make_list_if排除每个用户最后一条记录生成的空间隔值,输出结果和预期完全一致

输出结果

EmpIdTerminalTimeStampTimeSpentinMins
1A->B->A2021-11-16 05:00:15->2021-11-16 06:05:00->2021-11-16 08:00:1565->115
2B->C->B2021-11-16 05:00:15->2021-11-16 09:00:15->2021-11-16 11:00:15240->120

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.25 11:54:08