KQL查询对比今日与昨日同时段数据及图表优化问题
解决KQL跨时段数据对比的两个问题
问题1:时间戳对齐与缺失值填充
原查询用row_number()关联两日数据的方式不可靠,因为两日的分钟桶可能存在缺失(比如某分钟昨日有数据今日无,反之亦然),导致无法精准对齐。正确做法是将昨日的时间戳偏移到今日对应的时段,再通过fullouter join关联所有时间桶,最后用coalesce填充缺失的0值。
修改后的查询示例:
let timeRange = 1h; let todayData = SigninLogs | where TimeGenerated > ago(timeRange) | summarize TodayCount = count() by bin(TimeGenerated, 1m) | project TimeBucket = TimeGenerated, TodayCount; let yesterdayData = SigninLogs | where TimeGenerated between (ago(timeRange + 1d) .. ago(1d)) | summarize YesterdayCount = count() by bin(TimeGenerated, 1m) // 将昨日的时间桶偏移为今日对应的时段,实现精准对齐 | project TimeBucket = TimeGenerated + 1d, YesterdayCount; // 全外连接保留所有时间桶,用0填充缺失的计数 todayData | fullouter join yesterdayData on TimeBucket | project TimeBucket, TodayCount = coalesce(TodayCount, 0), YesterdayCount = coalesce(YesterdayCount, 0)
问题2:图表展示优化
移除多余列
在上述查询的末尾,通过project指定仅保留需要展示的列(TimeBucket、TodayCount、YesterdayCount)即可,从根源避免row、row1这类辅助列出现在结果中。
Y轴缩放(无需修改数值)
时间图表的Y轴缩放不需要改动KQL查询里的数值,直接在可视化面板的设置中调整:
- 找到Y轴配置选项
- 手动设置Y轴的最小值/最大值,或开启精细自动缩放模式(不同可视化工具操作略有差异,核心是通过面板配置实现缩放,无需修改查询逻辑)
内容的提问来源于stack exchange,提问作者Razi
相关产品推荐
相关产品推荐

