У меня много событий в разделе трассировки Application Insights. Меня интересуют два события «Начало» и «Конец», каждое из них имеет один и тот же идентификатор операции, поскольку они зарегистрированы в наборах. Иногда событие «Конец» может отсутствовать, так как возникла проблема с отслеживаемым приложением.
Мы можем сказать, ради аргумента, что у нас есть эти поля, которые нас интересуют: отметка времени, имя события, идентификатор операции.
Как я могу рассчитать точное время между двумя отметками времени для пары событий для всех уникальных идентификаторов операций в промежутке времени?
Моя первоначальная мысль заключалась в том, чтобы получить отдельные идентификаторы операций из трассировок, где eventName - «Начало» ... Но это, насколько я понимаю, так как я не совсем уверен, как выполнять остальные необходимые операции. (А именно - вычисление и проверка, существует ли вообще событие "Конец").
let operations =
traces
| where customDimensions.eventName = "Beginning"
| distinct operationId
Любая помощь будет принята с благодарностью!
Обновлено: Я, очевидно, думаю об этом неправильно. То, что мне нужно, это неуникальные идентификаторы операций. Это позволит отфильтровать отсутствующие «конечные» события. Если бы я мог затем объединить полученные результаты вместе на основе этого идентификатора, у меня было бы 2 отметки времени, с которыми я мог бы работать.
Итак, я понял это после кофе и времени на раздумья.
В конечном итоге с:
let a =
traces
| summarize count() by operation_Id;
let b =
a
| where count_ == 2
| project operation_Id;
let c =
traces
| where operation_Id in (b)
| join kind = inner(traces) on operation_Id
| order by timestamp,timestamp1
| project evaluatedTime=(timestamp1 - timestamp), operation_Id, timestamp;
c
| where evaluatedTime > timespan(0)
| project seconds=evaluatedTime/time(1s), operation_Id, timestamp