#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 (в моей среде их около 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. Спасибо, Славик Н. за информацию!