求助:如何通过KQL按时间间隔统计事件并生成饼图
KQL按时间区间统计事件并生成饼图方案
核心思路是计算事件创建时间与当前时间的天数差,再按指定区间分类统计,完全不用做多余的日期格式转换。直接用以下KQL语句:
// 替换成你的表名 your_table_name // 如果CreateDate是字符串格式,先转成datetime类型,否则可以去掉这行 | extend CreateDate = todatetime(CreateDate) | extend DaysDiff = datetime_diff('day', now(), CreateDate) | extend TimeRange = case( DaysDiff > 30, "超过30天", DaysDiff between (15 .. 30), "15-30天", DaysDiff between (7 .. 14), "7-15天", DaysDiff < 7, "不足7天", "其他" ) // 按时间区间统计唯一事件数,若IncidentId无重复可改用count() | summarize IncidentCount = dcount(IncidentId) by TimeRange | order by IncidentCount desc
关键步骤说明
datetime_diff('day', now(), CreateDate):直接计算当前时间与事件创建时间的天数差,返回整数,这是分类的核心依据。case函数:按天数差的范围将事件映射到指定的时间区间,注意区间边界的准确性(比如7-15天对应7到14天,15天及以上归到15-30天区间)。summarize:按时间区间分组统计事件数量,用dcount确保每个IncidentId只被计数一次。
注意事项
- 如果你的CreateDate字段是字符串类型,必须先通过
todatetime()转换为datetime类型,否则无法计算时间差。 - 无需做日期格式转换(如DD-MM-YYYY)或
TrimEnd()处理,KQL的datetime类型原生支持时间差计算,这些操作完全是画蛇添足。 - 运行完查询后,在Azure Monitor/Log Analytics的可视化面板切换到饼图视图,即可生成所需的饼图。
内容的提问来源于stack exchange,提问作者Mkorny
相关产品推荐
相关产品推荐

