You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在Application Insights Analytics中实现图表/分箱零值填充

解决Application Insights面积图零值填充问题

我之前也碰到过一模一样的情况!默认的summarize只会返回有数据的分箱,导致图表直接跳过空时段连起来,想要实现零值填充,核心思路是先构建一个完整的时间序列框架,再把你的业务数据左关联上去,空值自动补0就行。

单维度场景(你的原始查询)

直接看修改后的查询:

// 1. 先生成连续的时间范围,确保每个小时都有一条记录
let continuousTimestamps = range timestamp from ago(7d) to now() step 1h;
// 2. 保留你原来的计数逻辑
let eventCounts = customEvents 
    | where timestamp > ago(7d) 
    | summarize eventCount = count() by bin(timestamp, 1h);
// 3. 左连接时间序列和计数数据,空值用0填充
continuousTimestamps
| left join eventCounts on timestamp
| project timestamp, count = coalesce(eventCount, 0)
| render areachart

关键说明:

  • range函数生成了过去7天到现在,每小时一个时间点的完整序列,这是补零的基础
  • left join保证每个时间点都能保留,哪怕没有对应的事件数据
  • coalesce(eventCount, 0)把空的eventCount替换成0,完美解决空时段无数据的问题

多维度场景(比如按事件名称分组)

如果需要按不同事件类型分别统计,只要先生成「时间点+维度」的全量组合再关联就行:

let continuousTimestamps = range timestamp from ago(7d) to now() step 1h;
// 先获取所有需要统计的事件名称(也可以手动指定)
let eventNames = customEvents | distinct customEventName;
// 生成时间点和事件名称的全量组合
let fullSeries = continuousTimestamps | join kind=cross eventNames on $left.empty = $right.empty;
// 获取原始计数数据
let eventCounts = customEvents 
    | where timestamp > ago(7d) 
    | summarize eventCount = count() by bin(timestamp, 1h), customEventName;
// 左关联后补0
fullSeries
| left join eventCounts on timestamp, customEventName
| project timestamp, customEventName, count = coalesce(eventCount, 0)
| render areachart with (series=customEventName)

这样处理后,不管哪个时段有没有数据,图表都会显示对应的0值,不会再出现直接连点的情况啦~

内容的提问来源于stack exchange,提问作者ZakiMa

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.29 06:50:48