请求协助编写Kusto查询:获取过去7天每日日志计数
解决方案:Kusto统计过去7天每日日志数量
没问题,这就帮你写出符合需求的Kusto查询,刚好能实现过去7天每日日志数量统计,还能按你要的格式显示星期和计数~
完整Kusto查询
// 定义中文星期名称映射数组 let dayNames = dynamic(["周日", "周一", "周二", "周三", "周四", "周五", "周六"]); // 替换成你的实际表名 YourTableName // 筛选过去7天的完整日期(不含当天,对应你例子中9.2-9.8的范围) | where timestamp between (startofday(ago(7d)) .. startofday(now())) // 按自然日分组,统计每日日志数 | summarize LogCount = count() by DayStart = bin(timestamp, 1d) // 将日期转换为对应的中文星期名称 | extend DayName = dayNames[dayofweek(DayStart)] // 生成符合要求的显示文本,最近一天标注“当日” | extend DisplayText = strcat( DayName, iff(DayStart == startofday(ago(1d)), "(当日)", ""), " 日志计数-", tostring(LogCount) ) // 按日期倒序排列,最近的日期排在最前面 | sort by DayStart desc // 仅输出最终的统计文本(如需保留日期列可删除此行) | project DisplayText
关键部分说明
- 星期名称映射:用
dayNames数组把Kusto内置dayofweek()返回的数字(0=周日,1=周一…6=周六)转换成中文星期。 - 日期范围筛选:
startofday(ago(7d))会定位到7天前的凌晨0点,startofday(now())是今天凌晨0点,这样就能精准获取过去7天的完整日志数据(不含当天)。如果需要包含当天,把startofday(now())改成now()即可。 - 分组统计:
bin(timestamp, 1d)将时间戳按自然日分组,配合count()得到每日日志总数。 - 显示格式处理:用
strcat和iff函数拼接出你要的格式,自动给最近的一天(昨天)加上“(当日)”标注。 - 排序逻辑:按日期倒序排列,让最近的统计结果显示在最上方,和你例子里的顺序一致。
示例输出
如果当前日期是2022年9月9日,查询输出会类似:
周三(当日) 日志计数-50 周二 日志计数-105 周一 日志计数-65 周日 日志计数-42 周六 日志计数-78 周五 日志计数-90 周四 日志计数-62
内容的提问来源于stack exchange,提问作者OoO
相关产品推荐
相关产品推荐

