Как использовать оператор оценки с функцией области приложения или рабочей области в Azure Log Analytics?

Я смотрел на оператор оценки при выполнении запросов с использованием Azure Log Analytics, в частности с подключаемым модулем автокластера (но, похоже, у меня такая же проблема даже с предварительным просмотром и шаблонами различий).

Если у меня есть запрос, обращающийся к ресурсу напрямую (включая все таблицы или только одну), он работает нормально. Но если я сделаю один и тот же запрос для нескольких приложений или рабочих областей. Я получаю сообщение об ошибке:

Одна или несколько ссылок на шаблоны не объявлены. Обнаруженные ссылки на шаблоны: поддержка

Использование функции области видимости app () или workspace () кажется проблемой - не выполняется объединение для запроса по нескольким ресурсам.

Это не работает:

workspace("vmPROD").Perf
| evaluate autocluster()

И этого не делает:

app("someService").traces
| evaluate autocluster()

Это работает:

Perf
| evaluate autocluster()

Проблема в том, что я хочу оценивать ресурсы. Сначала я подумал, что это может быть ограничение функции области видимости, но table () - тоже функция области видимости, работает.

Это работает:

table("Perf")
| evaluate autocluster()

Как я могу обойти это ограничение? Это ошибка? В документации нет ничего, что упоминает об этом ограничении.


person Iris Classon    schedule 06.03.2018    source источник


Ответы (1)


Попробовав разные способы решить эту проблему, я наткнулся на materialize () функция. Эта функция позволяет кэшировать результат подзапроса, и мне кажется, что я могу использовать функции машинного обучения против кешированного результата при использовании app () или workspace () для ссылки на ресурс. Это также работает при объединении - это то, что я хотел сделать для всех ресурсов. Есть два основных ограничения, о которых следует подумать: вы можете кэшировать не более 5 ГБ результата и вам нужно использовать оператор let.

Вот пример с соединением:

let joinResult = union app('Konstrukt.SL.CalculationEngine').requests,app('Konstrukt.SL.AggregationEngine').requests;
let cachedJoinResult = materialize(joinResult);
cachedJoinResult 
| where success == false
| project session_Id, user_Id, appName,operation_Id,itemCount 
| evaluate autocluster();
person Iris Classon    schedule 09.03.2018
comment
Спасибо, Ирис, я один из менеджеров по Log Analytics, хотел сказать, что это действительно ошибка, и мы ее исправляем. - person Noa Kuperberg; 16.04.2018