基于Azure CDN访问日志的KQL查询:按设备类型统计独立IP占比
正确的KQL查询方案:Azure CDN苹果设备独立IP统计与饼图展示
核心查询代码
AzureDiagnostics | where OperationName == "Microsoft.Cdn/Profiles/AccessLog/Write" and Category == "AzureCdnAccessLog" // 按优先级标记设备类型,避免同一记录被多分类 | extend DeviceType = case( userAgent_s has "iphone", "iPhone", userAgent_s has "ipad", "iPad", userAgent_s has "macintosh", "Macintosh", "" ) | where DeviceType != "" // 去重:确保同一IP在同一设备类型下仅计数一次 | distinct clientIp_s, DeviceType // 统计各设备类型的独立IP数量 | summarize UniqueIPCount = dcount(clientIp_s) by DeviceType // 生成饼图展示占比 | render piechart with (title="苹果设备独立IP访问占比")
代码分步说明
- 日志范围过滤:先限定
OperationName和Category,确保只处理目标CDN访问日志。 - 设备类型标记:使用
case函数按优先级匹配userAgent_s中的关键词,给每条记录分配明确的设备类别,避免同一日志被多分类。 - 无效记录排除:过滤未匹配到目标设备的日志,只保留有效数据。
- 去重处理:通过
distinct确保同一个IP在同一设备类型下仅保留一条记录,避免重复计数。 - 统计计算:按设备类型分组,用
dcount计算独立IP的数量。 - 可视化输出:用
render piechart直接生成占比饼图,添加标题提升可读性。
原代码问题分析
你之前的代码通过三个布尔字段(MacOS/iPhone/iPad)分组,会生成多组布尔值组合,不符合饼图需要的「单一类别-对应数值」结构;同时未处理同一IP多次访问的去重逻辑,导致统计结果不准确,无法直接生成符合需求的饼图。
内容的提问来源于stack exchange,提问作者itmmdj
相关产品推荐
相关产品推荐

