Azure Dashboard卡片设置“Set in Query”时间范围后运行异常
你遇到的NaN报错核心原因是Azure Dashboard默认会对日志查询卡片强制应用仪表板全局时间范围,即便你在编辑面板选择了「Set in Query(查询中设置)」,如果没有关闭全局时间范围继承,查询中的ago()时间条件会被外部传入的时间范围截断,导致对应时间区间没有匹配数据,avg()聚合返回空值,最终计算得到NaN。
步骤1:优化查询语句增加空值兼容
修改原查询,增加空值兜底逻辑,避免某段时间无数据时直接返回异常:
let requests0to24HoursAgo = requests | where timestamp > ago(24h) | summarize last0to24HoursAverageRequestDuration=avg(duration), id=1; let requests24to192HoursAgo = requests | where timestamp > ago(192h) | where timestamp < ago(24h) | summarize last24to192HoursAverageRequestDuration=avg(duration), id=1; let diff = requests0to24HoursAgo // 改用全外连接,避免单边无数据时关联失败 | join kind=fullouter requests24to192HoursAgo on id // 空值替换为0,避免后续计算异常 | extend last0to24HoursAverageRequestDuration = coalesce(last0to24HoursAverageRequestDuration, 0) | extend last24to192HoursAverageRequestDuration = coalesce(last24to192HoursAverageRequestDuration, 0) // 分母为0时直接返回0,避免计算错误 | extend Diff = iff(last24to192HoursAverageRequestDuration == 0, 0, (last0to24HoursAverageRequestDuration - last24to192HoursAverageRequestDuration) / last24to192HoursAverageRequestDuration * 100) | project ["过去24小时平均响应时间"]=last0to24HoursAverageRequestDuration, ["过去24-192小时平均响应时间"]=last24to192HoursAverageRequestDuration, ["差值百分比"]=Diff; diff
步骤2:调整仪表板卡片配置
- 在仪表板中找到对应卡片,点击右上角更多按钮(三个点),选择「配置卡片」
- 在时间范围配置栏,确认选择「查询中设置」,取消勾选「继承仪表板时间范围」选项
- 保存卡片配置后刷新仪表板即可正常展示数据
步骤3:验证日志保留配置
如果调整后仍有异常,确认Log Analytics工作区的日志保留周期≥8天(192小时),如果保留时长不足,24-192小时区间无历史数据也会出现空值。
内容的提问来源于stack exchange,提问作者GooseZA
相关产品推荐
相关产品推荐

