如何在Application Insights Analytics中零填充图表/分档

Zak*_*iMa 2 azure azure-application-insights

我正在尝试在Application Insights Analytics中绘制一个总和/计数指标的面积图:

customEvents
| where timestamp > ago(7d)
| summarize count() by bin(timestamp, 1h)
| render areachart  
Run Code Online (Sandbox Code Playgroud)

我看到的是,如果某些存储桶中没有数据,那么图表不会下降到0.而是连接了两个点,并且认为存在一些数据,而实际上没有.

问题 - 如何获得零填充区域图表(对应于红色墨水图表)?

在此输入图像描述

Dmi*_*eev 5

有几种方法可以实现这一目标.

make-series运算符允许为没有数据聚合的时段设置默认值:

customEvents
| where timestamp > ago(10m)
| make-series count() default=0 on timestamp in range(ago(10m), now(), 1m)
| render areachart
Run Code Online (Sandbox Code Playgroud)

这将生成零填充数据数组,| render并相应地构建图表.

如果| summarize是首选,您可以使用范围运算符自行创建零填充范围:

let defaultValue = 0;
range timestamp from floor(ago(10m),1m) to floor(now() + 10m,1m) step 1m
| join kind=leftouter
(
    customEvents
    | where timestamp > floor(ago(10m),1m) and timestamp < floor(now(),1m)
    | summarize Value=count() by bin(timestamp, 1m)
) on timestamp
| project timestamp, value = iff(isnotempty(Value), Value, defaultValue)
| render areachart
Run Code Online (Sandbox Code Playgroud)

确保使用join kind=leftouter输出中存在的连接左侧的所有时间戳.

  • 我希望有一种内置的方法可以在不更改查询逻辑的情况下完成此操作。例如`| 使用零填充渲染面积图` (5认同)
  • 很高兴理解 make-series 的动机,但这些都不是解决问题的好方法:make-series 不生成行,而 range 需要重构查询并使查询复杂化。我们需要的是一个简单的 bin 修饰符,确保每个 bin 都有一行,无论它是否包含任何事件。 (2认同)