Azure Application Insight Query для получения успеха - PullRequest
1 голос
/ 24 марта 2020

Есть вопрос о том, как я могу показать показатель успеха на Azure Панель инструментов. Если у меня есть одно событие temeletry, которое указывает на успех или неудачу - это довольно просто:

    customEvents
    | where name == "ResponseEvent" and customDimensions.Condition == "test"
    | summarize count() by tostring(customDimensions.State) //State could be Success|Failure
    | render piechart

Но в моем случае - у меня есть 2 события: RequestEvent, SuccessResponseEvent и из этих двух я хочу получить показатель успеха, что-то например: successRate = 100 * successCount / requestCount.

Я получаю это соединение:

    customEvents
    | where name == "RequestEvent" and customDimensions.Condition == "test"
    | summarize  requestCount = count()
    | extend joinField = "1"
    | join ( customEvents
    | where name == "SuccessResponseEvent" and customDimensions.Condition == "test"
    | summarize  successCount = count()
    | extend joinField = "1")
    on joinField
    | extend successRate = (100 * successCount / requestCount)
    //////| extend failureRate = 100 - successRate 
    | project successRate
    | render table

Я получил нужное значение, но мне удается отобразить его только в виде таблицы, пока Мне нужна круговая диаграмма Я думал о добавлении union:

    let success = view () { print x=toint(80) };
    let failure = view () { print x=toint(20) };
    union withsource=TableName success, failure
    | render piechart

Но я не вижу, как это сделать в моем запросе.

Или создать переменные, используя оператор let, и попытаться вычислить все и объединить, используя materialize. (createRequestRectained), но это вызывает довольно много ошибок, и я надеюсь, что существует какой-то простой способ.

Вопрос: возможно, кто-то может указать мне, как я могу достичь этого: вычислить одно значение, возможно отобразить его как два значения (success и 100-success) и упорядочить их в формате, допустимом для оператора «render piechart»?

И второй вопрос, не столь важный: могу ли я присоединить их к какому-либо существующему полю? Когда я пытаюсь использовать joinField = tostring (customDimensions.MappingField) Я получаю сообщение об ошибке: Убедитесь, что выражение: customDimensions.MappingField действительно является простым именем

Ответы [ 2 ]

1 голос
/ 24 марта 2020

Если вы собираетесь использовать круговую диаграмму, для нее потребуется поле легенды строки и значение в каждой строке для этого сегмента, поэтому должно сработать объединение двух результатов:

requests
| summarize Success = sumif(itemCount, success == true)
| project Legend = "Success", Value = Success 
| union
(requests
| summarize Failed = sumif(itemCount, success == false)
| project Legend = "Failed", Value = Failed )
| render piechart

Для диаграммы будет Позволяет использовать оба предложения summarize в одном запросе без объединения / объединения и может повысить производительность:

requests
| summarize Success = sumif(itemCount, success == true), Failed = sumif(itemCount, success == false)
| project Legend = "Status", Success, Failed 
| render barchart 

Аналогичным образом, для вычисления скорости в одном запросе:

requests
| summarize Success = sumif(itemCount, success == true), Failed = sumif(itemCount, success == false)
| extend SuccessRate = Success * 1.0 / (Success + Failed)
0 голосов
/ 29 марта 2020

Я вполне уверен, что это не лучший вариант, и я что-то не так в возможностях этого языка запросов, но я мог бы поместить свой запрос в переменную, применить некоторое кэширование и повторить его дважды, я полагаю:

let dataSource = customEvents
| where name == "RequestEvent" and customDimensions.Condition == "test"
| summarize  requestCount = count()
| extend joinField = "1"
| join ( customEvents
| where name == "SuccessResponseEvent" and customDimensions.Condition == "test"
| summarize  successCount = count()
| extend joinField = "1")
on joinField
| extend successRate = (100 * successCount / requestCount)
| extend failureRate = 100 - successRate;
let cacheddataSource = materialize(dataSource);
cacheddataSource
| project Legend = "Success", Value = successRate
| union (
dataSource
|project Legend = "Failure", Value = failureRate 
) 
| render piechart

Итак, пусть и материализует более-менее помогает, возможно, понадобятся некоторые настройки, чтобы отобразить фактическое количество успехов и неудач.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...