запрос кусто — как группировать по дате, а также группировать по имени

#azure-data-explorer #kql

#azure-data-explorer #kql

Вопрос:

В приведенном ниже запросе я просматриваю одну длительность API (foo / bar1) в 80-м процентиле, которая вызывается в заданном диапазоне дат, чтобы я мог видеть, есть ли какой-либо всплеск или ухудшение. (изображение ниже)

 let dataset = requests 
| where name == "GET foo/bar1"
and timestamp between(datetime("2020-10-15") .. datetime('2020-10-28'));
dataset
| summarize loadTime = round(percentile(duration, 80)) by format_datetime(timestamp, 'yyyy-MM-dd')
| order by timestamp desc
  

Результат продолжительности первого запроса API для foo / bar1

Проблема, с которой я сталкиваюсь, заключается в том, что может быть более одного API (в моей среде их около 150), и я также хочу получить 80-й процентиль этих API, но мне трудно, как это сделать или даже возможно.

Ответ №1:

Я мог бы понять это .. удалив «имя» из набора данных, затем добавьте «имя» в раздел группировки в конце строки суммирования.

 let dataset = requests 
    |
    where timestamp between(datetime("2020-10-25") .. datetime('2020-10-28'));
    dataset
    | summarize loadTime = round(percentile(duration, 80)) by format_datetime(timestamp, 'yyyy-MM-dd'), name
    | order by timestamp desc 
  

Комментарии:

1. Более эффективно группировать по bin(timestamp, 1d) , а не format_datetime(timestamp, 'yyyy-MM-dd') по, и даст вам тот же результат (за исключением того, что формат даты будет немного отличаться, но вы можете изменить его форматирование в следующей строке с помощью extend оператора).

2. Спасибо, Славик Н. за информацию!