Как использовать max(метку времени) с суммированием при использовании других агрегированных столбцов (count()) в kusto (kql)?

#max #azure-log-analytics #kql

Вопрос:

Я пытаюсь написать запрос в kusto (kql), где я бы проверил, какие пользователи сколько раз обращались к каким проектам.

 pageViews
| extend projectId = extract(@"/projects/([0-9a-f]{32}|[0-9a-zA-Z]{21,22})", 1, url)
| where url matches regex @'/projects/([0-9a-f]{32}|[0-9a-zA-Z]{21,22})' 
and timestamp > ago(90d)
and isnotempty(user_Id)
| project timestamp, user_AccountId, user_Id, url, projectId
| summarize projectRequests = count() by  user_Id, projectId
 

Мне нужно расширить эту функциональность, указав, когда был последний доступ

Я пытался:

 pageViews
| extend projectId = extract(@"/projects/([0-9a-f]{32}|[0-9a-zA-Z]{21,22})", 1, url)
| where url matches regex @'/projects/([0-9a-f]{32}|[0-9a-zA-Z]{21,22})' 
and timestamp > ago(90d)
and isnotempty(user_Id)
| project timestamp, user_AccountId, user_Id, url, projectId
| summarize projectRequests = count() by  user_Id, projectId, LastEdit = max(timestamp)
 

но это дало мне

Функция » max » не может быть вызвана в текущем контексте

Как я могу расширить этот запрос, включив в него время последнего доступа к проекту?

Ответ №1:

Вы должны заменить:

| summarize projectRequests = count() by user_Id, projectId, LastEdit = max(timestamp)

с

| summarize projectRequests = count(), LastEdit = max(timestamp) by user_Id, projectId

Ответ №2:

Мне пришлось развернуться LastEdit = max(timestamp) и ProjectRequests = count() by user_Id, projectId .

Нравится:

 pageViews
| extend projectId = extract(@"/projects/([0-9a-f]{32}|[0-9a-zA-Z]{21,22})", 1, url)
| where url matches regex @'/projects/([0-9a-f]{32}|[0-9a-zA-Z]{21,22})' 
and timestamp > ago(90d)
and isnotempty(user_Id)
| project timestamp, user_AccountId, user_Id, url, projectId
| summarize LastEdit = max(timestamp), ProjectRequests = count() by  user_Id, projectId