Получите разницу между последовательными временными метками KQL

У меня есть набор данных, как показано ниже

[
env_seqNum:int, env_tim:datetime, message:string, scenario: string, subscenario: string, requestId: string
1,2024-05-30T09:33:29.00Z, StartingOperation getToken XXX, ScenarioA, SubscenarioA, abcd-fghf,
2,2024-05-30T09:33:35.00Z, FinishingOperation getToken XXX, ScenarioA, SubscenarioA, abcd-fghf,
15,2024-05-30T09:33:55.00Z, StartingOperation getToken XXX, ScenarioA, SubscenarioA, abcd-fghf,
19,2024-05-30T09:33:58.00Z, FinishingOperation getToken XXX, ScenarioA, SubscenarioA, abcd-fghf,
]

Как видите, у меня есть операция получения токена, которая выполняется дважды в одном запросе для выполнения двух вызовов API. Теперь я хочу знать совокупное время, затраченное на операцию получения токена на каждый запрос. Я не могу просто сделать разницу между первой и последней строкой, поскольку это дает мне разницу в 29 секунд, тогда как на самом деле обе операции получения токена заняли 9 секунд (6 и 3). Как мне заставить это работать в KQL? Мне интересно, как мы можем использовать столбец env_seqNum для выполнения этой операции, поскольку она уникальна для каждой строки, которую он регистрирует, или есть ли лучший способ?

Ожидается что-то вроде requestId, Operation, subScenario, TimeTaken abcd-fghf, TokenAcquired, SubScenario, 9 (6+3).

Programmerzzz 31.05.2024 06:10
Как установить LAMP Stack - Security 5/5 на виртуальную машину Azure Linux VM
Как установить LAMP Stack - Security 5/5 на виртуальную машину Azure Linux VM
В предыдущей статье мы завершили установку базы данных, для тех, кто не знает.
Как установить LAMP Stack 1/2 на Azure Linux VM
Как установить LAMP Stack 1/2 на Azure Linux VM
В дополнение к нашему предыдущему сообщению о намерении Azure прекратить поддержку Azure Database для MySQL в качестве единого сервера после 16...
0
1
57
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Таблица выглядит следующим образом:

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

let Rith = datatable (
    ri_env_seqNum:int, 
    ri_env_tim:datetime, 
    ri_message:string, 
    ri_scenario:string, 
    ri_subscenario:string, 
    ri_requestId:string
) [
    1, datetime(2024-05-30T09:33:29.00Z), "StartingOperation getToken XXX", "ScenarioA", "SubscenarioA", "abcd-fghf",
    2, datetime(2024-05-30T09:33:35.00Z), "FinishingOperation getToken XXX", "ScenarioA", "SubscenarioA", "abcd-fghf",
    15, datetime(2024-05-30T09:33:55.00Z), "StartingOperation getToken XXX", "ScenarioA", "SubscenarioA", "abcd-fghf",
    19, datetime(2024-05-30T09:33:58.00Z), "FinishingOperation getToken XXX", "ScenarioA", "SubscenarioA", "abcd-fghf"
];
let ri_so_OP = Rith
    | where ri_message startswith "StartingOperation getToken"
    | project ri_requestId, start_seqNum = ri_env_seqNum, start_time = ri_env_tim;
let ri_fo_OP = Rith
    | where ri_message startswith "FinishingOperation getToken"
    | project ri_requestId, ri_finish_seqNum = ri_env_seqNum, finish_time = ri_env_tim;
let ri_pa_OP = ri_so_OP
    | join kind=inner (ri_fo_OP) on ri_requestId
    | where ri_finish_seqNum > start_seqNum
    | summarize ri_min_finish_seqNum = min(ri_finish_seqNum) by ri_requestId, start_seqNum, start_time
    | project ri_requestId, start_seqNum, start_time, ri_min_finish_seqNum;
ri_pa_OP
| join kind=inner (ri_fo_OP) on $left.ri_requestId == $right.ri_requestId and $left.ri_min_finish_seqNum == $right.ri_finish_seqNum
| project ri_requestId, start_time, finish_time, duration = datetime_diff('second', finish_time, start_time)
| summarize rith_cumula_duration = sum(duration) by ri_requestId
| project ri_requestId, rith_cumula_duration

Выход:

Скрипка.

Привет @RithwikBojja, я новичок и пытаюсь испачкать руки KQL. Как нам развить такие продвинутые навыки в KQL? Есть какие-нибудь предложения для меня?

Programmerzzz 31.05.2024 07:59

Попробуйте и попробуйте проверить некоторые документы по этому поводу.

RithwikBojja 31.05.2024 08:01

Другие вопросы по теме

Похожие вопросы

Terraform: ошибка: получение статических свойств веб-сайта для учетной записи хранения (подписка: ***: превышен крайний срок контекста)
Приложения Azure MSAL React используют одну и ту же аутентификацию/пользователя в нескольких приложениях
Как проверить тег диапазонов opentelemetry в аналитике приложений Azure
Пакет дополнительных компонентов Azure для служб интеграции SQL Server (SSIS) — необходимо установить на Sql Server?
Azure: добавьте метку конфиденциальности в группу Azure с помощью Powershell
Приложение с изолированной функцией не регистрирует следы, а только информацию
Ограничение сценария запуска служб приложений Azure
Фабрика данных Azure: как предотвратить выполнение потока данных, если в результате действия копирования в фабрике данных Azure не найден файл?
Поддерживает ли интерпретатор кода в Azure Open AI арабский язык из файлов?
Обновление .NET 8 ISOLATED прекратило регистрацию информации, отладки