Application Insights Log Query Получить последнюю строку в группе - PullRequest
0 голосов
/ 03 ноября 2018

Я пытаюсь найти последнюю строку каждого члена группы в Application Insights.

Вот запрос:

traces | 
where timestamp > ago(1h) | 
where message startswith "TEST DONE" | 
order by timestamp desc nulls last |  
extend json=parse_json(substring(message,10))  | 
summarize  any(timestamp, tostring(json.status)) by tostring(json.testKey)

Он возвращает только одну строку, но это не самая последняя, ​​это любая случайная строка из набора возможных строк.

Ответы [ 2 ]

0 голосов
/ 10 ноября 2018

Я думаю, вы ищете функцию arg_max?

https://docs.microsoft.com/en-us/azure/kusto/query/arg-max-aggfunction

что-то вроде:

traces | 
where timestamp > ago(1h) | 
where message startswith "TEST DONE" | 
order by timestamp desc nulls last |  
extend json=parse_json(substring(message,10))  | 
extend testKey = tostring(json.testKey) |
extend status = tostring(json.status) |
summarize arg_max(timestamp, status) by testKey
0 голосов
/ 04 ноября 2018

Вы можете использовать makelist ([имя столбца], 1), чтобы выбрать первый. Затем обратитесь к нему по индексу. Использование этой техники позволило решить вышеуказанную проблему с моим набором данных.

Адаптация к вашему запросу:

traces | 
where timestamp > ago(1h) | 
where message startswith "TEST DONE" | 
order by timestamp desc nulls last |  
extend json=parse_json(substring(message,10))  | 
extend testKey = tostring(json.testKey) |
summarize timeStampList=makelist(timestamp, 1), statusList=makelist(tostring(json.status), 1) by testKey |
project timeStampList[0], statusList[0], testKey  
...