如何用Kusto自动统计AppInsights自定义维度所有字段的唯一值计数?
使用Kusto自动统计App Insights自定义维度所有字段的唯一值计数
直接用Kusto的动态对象拆分与分组统计能力就能实现,无需提前知晓自定义字段名,具体查询如下:
// 替换为你的遥测表名(如requests、traces等) your_telemetry_table // 可选:添加时间范围过滤,提升查询性能 | where timestamp between (ago(7d) .. now()) | where isnotempty(customDimensions) // 将customDimensions拆分为[字段名, 字段值]的键值对行 | mv-apply kv = customDimensions on ( project FieldName = tostring(kv[0]), FieldValue = tostring(kv[1]) ) // 按字段名分组,统计唯一值数量 | summarize UniqueValueCount = dcount(FieldValue) by FieldName // 按唯一值数量降序排列,便于查看 | sort by UniqueValueCount desc
关键步骤说明:
mv-apply kv = customDimensions on (...):把customDimensions这个动态字典拆分为多条键值对记录,每条原始遥测记录会根据其自定义维度的字段数量生成对应行数。tostring()转换:确保字段名和值统一为字符串类型,避免因值类型(如数字、布尔、复杂对象)不一致导致的统计误差;如果需要保留复杂类型的完整结构,可改用bag_to_string(kv[1])。dcount(FieldValue):高效统计每个字段的唯一值数量,适合大数据量场景;若需精确计数(无采样),可使用count_distinct(FieldValue)。
如果需要同时统计字段的总出现次数,可修改summarize部分:
| summarize UniqueValueCount = dcount(FieldValue), TotalOccurrences = count() by FieldName | sort by UniqueValueCount desc
内容的提问来源于stack exchange,提问作者Sten Petrov
相关产品推荐
相关产品推荐

