Я пытаюсь построить диаграмму с одной метрикой сумма / количество с течением времени в Application Insights Analytics:

customEvents
| where timestamp > ago(7d)
| summarize count() by bin(timestamp, 1h)
| render areachart  

Я вижу, что если в некоторых сегментах нет данных, тогда диаграмма не опускается до 0. Вместо этого связаны две точки, и есть ощущение, что были некоторые данные, хотя на самом деле их не было.

Вопрос - как получить диаграммы с нулевой заливкой (соответствующие диаграмме с красными чернилами)?

enter image description here

4
ZakiMa 25 Май 2018 в 23:19

1 ответ

Лучший ответ

Есть несколько способов добиться этого.

Оператор make-series позволяет установить значение по умолчанию для периодов, когда нет данных для агрегирования:

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

Это создаст массив данных с нулевым заполнением, и | 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

Убедитесь, что вы используете join kind=leftouter, чтобы в выводе присутствовали все временные метки с левой стороны соединения.

15
Dmitry Matveev 25 Май 2018 в 22:10