Kusto | Получение среднего количества по кварталам и отображение линейной диаграммы с датами (включая кварталы без данных)

#azure-data-explorer #kql

#azure-data-explorer #kql

Вопрос:

Я пытаюсь найти наилучший способ (или любой другой способ) создать линейную диаграмму для отображения среднего количества чего-либо за квартал. Когда я говорю «ежеквартально», я в основном имею в виду с шагом в 91 день (не календарные кварталы, такие как 01/01 — 03/01). Я хочу вывести это на линейный график, чтобы показать тренд, поэтому я также хочу, чтобы график показывал 0 отсчетов там, где нет данных за квартал.

Чтобы показать пример, допустим, у меня есть следующая таблица дат посещения для студентов:

 let SampleTable = datatable(AttendanceDate:datetime, Student:string) 
[
    "02-01-2021", "John",
    "01-01-2021", "Jane",
    "06-01-2020", "Bill",
];
 

И я хочу показать график посещаемости по кварталам, поэтому я пытаюсь сделать что-то вроде этого:

 SampleTable
| summarize AttendanceCount = count() by Quarter = datepart("Quarter", AttendanceDate)
| order by Quarter desc
| render linechart
 

И я получаю это
фактический результат

А это не совсем то, к чему я стремлюсь. В этом примере кварталы будут выполняться следующим образом (просто для справки):

 Q1 = 02/01/2021 - 12/01/2020
Q2 = 11/31/2020 - 09/01/2020
Q3 = 08/31/2020 - 06/01/2020
 

Так что в идеале результат должен выглядеть следующим образом:
идеальный выход

Я не знаю, возможно ли это без написания длинного / сложного запроса, но все, что близко к этому (например, отображение одной даты вместо диапазона), было бы большим подспорьем.

Ответ №1:

вот вариант:

 let SampleTable = datatable(AttendanceDate:datetime, Student:string) 
[
    "02-01-2021", "John",
    "01-01-2021", "Jane",
    "06-01-2020", "Bill",
];
let start = toscalar(SampleTable | summarize min(AttendanceDate));
SampleTable
| make-series count() on AttendanceDate from start to now() step 91d
| render timechart 
 

результат в виде временной диаграммы