You need to enable JavaScript to run this app. 使用Kusto Query Language统计指定日期带时间戳的登录用户数及明细查询
优惠活动
大模型
产品
解决方案
定价
更多

使用Kusto Query Language统计指定日期带时间戳的登录用户数及明细查询

现有查询的核心问题
  • 执行distinct user_AccountId步骤时,系统会仅保留用户账号ID字段,其余字段(包括登录时间戳timestamp)会被全部剔除,后续操作根本无法获取每个用户的登录时间明细。
  • 执行完distinct user_AccountId后,每个用户账号仅对应1行数据,后续的summarize count() by user_AccountId会让每个用户的统计值固定为1,完全失去登录频次统计的意义。
  • 原有正则匹配存在语法错误:KQL正则引擎中*是前置表达式的重复限定符,不能直接放在匹配模式最开头,原写法^*@xxxxx-xxxx.net、^*@xxxxtool完全无法实现预期的域账号过滤效果。
  • 现有逻辑没有把“全局登录用户总数”和“逐用户登录明细”整合为可直接输出的结果结构,需要拆分多次查询才能拿到完整数据。
修正后的可落地KQL查询

保留原有的账号过滤、时间范围筛选逻辑,修正语法问题后实现需求:

requests
// 二选一设置统计时间范围:可自定义指定时间区间,也可使用近1天的快捷范围
| where timestamp between (datetime(2021-03-01) .. datetime(2021-03-31))
// | where timestamp > ago(1d)
// 保留原有服务类/无效账号排除规则
| where user_AccountId !in ("sdasw", "gkhsksaauh", "dadwfa", "FREAD", "ReportBatch", "HSAIIF", "87383123hADHUQ++==", "GHDSQQU**++")
// 修正正则语法,过滤两类无效域账号
| where not(user_AccountId matches regex @".+@xxxxx-xxxx\.net$")
| where not(user_AccountId matches regex @".+@xxxxtool$")
| where user_AccountId != ""
// 按用户维度聚合,拿到每个用户的登录时间明细、单用户登录次数
| summarize
    登录时间明细列表 = make_list(timestamp),
    单用户登录次数 = count()
    by user_AccountId
// 计算全局去重登录用户总数,直接追加到结果中
| extend 统计周期内总登录用户数 = dcount(user_AccountId)
输出字段说明
  • user_AccountId:符合筛选规则的单个登录用户账号
  • 登录时间明细列表:对应用户在统计周期内的所有登录时间戳集合
  • 单用户登录次数:对应用户在统计周期内的登录总频次
  • 统计周期内总登录用户数:当前筛选条件下的全量去重登录用户总数,所有结果行的该值为统一全局统计值,无需二次计算。

注意:如果需要调整过滤的域账号规则,要保证正则符合KQL语法规范,避免使用带无前置表达式的*的无效匹配模式。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.25 11:54:03