У меня есть простой запрос KQL, который отображает (журнал) количество всех исключений за 90 дней:
exceptions
| where timestamp > ago(90d)
| summarize log(count()) by bin(timestamp, 1d)
| render timechart
Что я хотел бы сделать, так это добавить несколько опорных строк на временную диаграмму, которую это генерирует. На основе документы это довольно просто:
| extend ReferenceLine = 8
Усложняющим фактором является то, что я хотел бы, чтобы эти опорные линии были основаны на агрегации значения, которое я рисую. Например, мне нужна контрольная линия для минимального, среднего значения и значения 3-го квартиля.
Ориентируясь на первый из них (минимальный), получается, что нельзя использовать min()
вне summarize()
. Но я могу использовать это в extend()
.
Меня привлекло min_of()
, но это предполагает список аргументов вместо столбца. Я думаю, что мог бы, вероятно, расширить столбец до ряда значений, но это кажется хакерским и выйдет за пределы определенного количества значений.
Какой идиоматический способ сделать это?
вы можете попробовать что-то вроде следующего:
exceptions
| where timestamp > ago(90d)
| summarize c = log(count()) by bin(timestamp, 1d)
| as hint.materialized=true T
| extend _min = toscalar(T | summarize min(c)),
_perc_50 = toscalar(T | summarize percentile(c, 50))
| render timechart
это эквивалентно выполнению чего-то вроде: let T = materialize(execptions … | by bin(timestamp, 1d); T | extend _min ...
Спасибо Йони. Это прекрасно работает. Одно: что здесь
hint.materialized=true
? И чем он отличается отmaterialize()