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

Kusto查询如何获取SigninLogs中各唯一值对应的最新行

解决方案

你可以用Kusto内置的arg_max()聚合函数实现需求,该函数可以返回指定分组内时间戳最新的对应行数据,同时避免全量查询返回过多结果,也能解决时间戳字段导致distinct无法生效的问题。

调整后的查询语句

假设你要按UserPrincipalName(用户主体名称,用户唯一标识)作为「唯一值」的分组维度,查询语句如下:

SigninLogs
| project TimeGenerated, Identity, UserPrincipalName, Location, DeviceDetail
| summarize arg_max(TimeGenerated, *) by UserPrincipalName

说明

  • arg_max(TimeGenerated, *)的作用是取分组内TimeGenerated(时间戳)最大的那条记录,*代表返回该记录所有你已投影的字段
  • by后面跟着的是你要去重的唯一维度字段:
    • 如果是按单个字段去重,直接填写单个字段即可,比如上面示例的UserPrincipalName
    • 如果是按多个字段的组合判断唯一值,把所有字段都放在by后面即可,比如要按「用户+登录位置」组合去重,就写成by UserPrincipalName, Location

性能优化建议

可以在查询最前面增加时间范围过滤,进一步减少扫描的数据量,提升查询效率,比如限定查询最近30天的日志:

SigninLogs
| where TimeGenerated >= ago(30d) // 可按需调整时间范围
| project TimeGenerated, Identity, UserPrincipalName, Location, DeviceDetail
| summarize arg_max(TimeGenerated, *) by UserPrincipalName

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.04 19:00:01