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

如何编写KQL查询Log Analytics工作区的用户表访问及查询次数

统计Log Analytics工作区的用户查询行为

AzureActivity表主要记录工作区的管理类操作(如权限变更、资源配置),无法获取用户执行查询时访问的具体表信息。要统计用户、访问表及查询次数,需使用专门存储查询日志的LAQueryLogs表,以下是正确的KQL查询:

// 统计指定工作区中用户访问各表的查询次数
LAQueryLogs
// 替换为你的目标工作区ID或名称
| where WorkspaceId == "your-workspace-id" or WorkspaceName == "your-workspace-name"
// 调整时间范围,示例为当年至今
| where TimeGenerated between (startofyear(now()) .. now())
// 仅统计成功执行的查询(可根据需求移除)
| where ResultType == "Success"
// 从查询语句中提取访问的表名(适配常见查询语法,复杂场景需调整正则)
| extend AccessedTables = extract_all(@"([a-zA-Z0-9_]+)(?=\s*\||\s*where|\s*from|\s*$)", dynamic([0]), QueryText)
// 将数组形式的表名展开为单行记录
| mv-expand AccessedTables to typeof(string)
// 关联IdentityInfo补充用户UPN(若Caller已是UPN可省略此join)
| join kind=leftouter (
    IdentityInfo
    | where TimeGenerated > ago(90d)
    | summarize arg_max(TimeGenerated, *) by AccountSID
) on $left.CallerSid == $right.AccountSID
// 统一用户标识,优先使用UPN
| extend User = coalesce(AccountUPN, Caller)
// 按用户和表名统计查询次数
| summarize QueryCount = count() by User, AccessedTables
// 按查询次数降序排列
| sort by QueryCount desc

关键说明:

  • LAQueryLogs:存储Log Analytics中所有查询操作的详细日志,包含查询语句、发起用户、执行结果等核心字段
  • extract_all:通过正则表达式从QueryText中提取表名,默认适配表名 | 操作、表名 where等常见语法,若需支持子查询、跨工作区查询等复杂场景,需调整正则规则
  • mv-expand:将提取到的表名数组拆分为独立行,确保每个用户-表的组合能被单独统计
  • 若你的场景中Caller字段直接显示用户UPN,可移除join IdentityInfo的步骤,直接用Caller作为User字段

内容的提问来源于stack exchange,提问作者Louis Di Edgar

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.19 07:32:41