Как извлечь разницу во времени между двумя запросами с помощью KUSTO

У меня есть два события Rawdata, где одно является запросом с одной отметкой времени, а другое - ответом с другим интервалом времени. Существует ли функция kusto, которая может извлечь эти две даты из необработанных данных и выполнить разницу во времени между обоими

2 ответа

Решение

Да, есть. Несколько сложно дать вам лучший вариант, не видя образец ваших входных данных, но вы можете посмотреть на parse оператор: https://docs.microsoft.com/en-us/azure/kusto/query/parseoperator или extract() функция: https://docs.microsoft.com/en-us/azure/kusto/query/extractfunction

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

print request = "this<>is!!!my-request from 2019-08-14 17:54:36.8892211, the end",
      response = "this is the matching 2019-08-14 17:55:36.0000033 response"
| parse request with * "from " request_datetime:datetime "," *
| parse response with * "matching " response_datetime:datetime " response"
| project diff = response_datetime - request_datetime
// this returns a single table with a single column named 'diff', whose value is '00:00:59.1107822'

или же

datatable(event_text:string, correlation_id:long) [
    "this<>is!!!my-request from 2019-08-14 17:54:36.8892211, the end", 1,
    "this is the matching 2019-08-14 17:55:36.0000033 response", 1,
]
| extend dt = extract(@"(\d{4}-\d{2}-\d{2} \d{2}:\d{2}:\d{2}\.\d{7})", 1, event_text, typeof(datetime))
| summarize diff = max(dt) - min(dt) by correlation_id
// this returns a single table with 2 columns named 'correlation_id' and 'diff', whose values are are '1' and '00:00:59.1107822'

Ответ Йони показал, как извлечь временные метки. Получив их, вы можете использовать datetime_diffфункция. Скажем, вы хотите узнать, сколько секунд разница между двумя временными метками:

| extend TimeDiff = datetime_diff('second', SigninTime, EventTime)

Вы можете использовать эту информацию для фильтрации. Скажем, вы хотите сохранить только строки, в которых эти метки времени находятся в пределах 20 секунд друг от друга:

| filter TimeDiff < 20

https://docs.microsoft.com/en-us/azure/data-explorer/kusto/query/datetime-difffunction

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