Kusto数据透视表聚合问题:按错误合并系统并汇总统计
Kusto透视表聚合解决方案
针对你需要按Error列聚合、拼接System并汇总日期错误数的需求,可通过以下两种方式实现:
方式一:固定日期场景(如最近3天)
如果统计的日期范围固定(如Day-1到Day-3),可以直接指定日期列进行汇总:
<data processing> // 1. 先按Error、System、日期维度统计错误数 | summarize ErrorCount = count() by Error, System, day // 2. 生成透视表,得到每个Error+System组合的日期错误数 | evaluate pivot(day, sum(ErrorCount), Error, System) // 3. 按Error聚合:拼接System,汇总各日期列数值 | summarize System = strcat_array(make_set(System), ","), // 去重拼接系统名称,需保留重复则用make_list Day-1 = sum(Day-1), Day-2 = sum(Day-2), Day-3 = sum(Day-3) by Error
方式二:动态日期场景(如最近x天,天数不固定)
如果日期范围是动态变化的,可通过动态对象处理避免手动维护日期列:
<data processing> // 1. 按Error、System、日期统计错误数 | summarize ErrorCount = count() by Error, System, day // 2. 转换日期格式为"Day-n",打包成键值对 | extend day_col = strcat("Day-", day) | summarize System = strcat_array(make_set(System), ","), day_values = make_bag(pack(day_col, ErrorCount)) by Error, System // 3. 按Error合并系统列表和日期计数 | summarize System = strcat_array(make_set(System), ","), all_day_values = bag_merge(day_values) by Error // 4. 展开动态对象为日期列 | evaluate bag_unpack(all_day_values) // 5. 为缺失的日期列补0(可选) | extend Day-1 = coalesce(Day-1, 0), Day-2 = coalesce(Day-2, 0), Day-3 = coalesce(Day-3, 0) // 6. 调整列顺序 | project Error, System, Day-1, Day-2, Day-3
关键逻辑说明
strcat_array(make_set(System), ","):对同一错误下的系统名称去重后拼接成逗号分隔字符串,若需保留重复出现的系统,替换make_set为make_list即可。pivot函数:用于生成日期维度的透视列,结合summarize完成基础的分组统计。- 动态场景下的
make_bag+bag_unpack:实现对不固定日期列的自动处理,无需手动修改代码适配日期范围。
内容的提问来源于stack exchange,提问作者person.483
相关产品推荐
相关产品推荐

