Application Insights — как вывести общее количество сеансов для каждой сборки

У меня есть событие под названием «Crash». Мне нужно вывести результаты, показывающие «№ сборки, общее количество событий сбоя для сборки и общее количество сеансов для сборки.

Я думаю, что я близок, просто не могу понять, как получить общее количество сеансов для каждого измерения «Сборка».

let usg_events = dynamic(["Crash"]);
let mainTable = union pageViews, customEvents, requests
    | extend name =replace("\n", "", name)
    | where '*' in (usg_events) or name in (usg_events)
;
let queryTable = mainTable;
let cohortedTable = queryTable
    | extend dimension = customDimensions["Build"]
    | extend dimension = iif (isempty(dimension), "<undefined>", dimension)
    | summarize hll = hll(itemId) by tostring(dimension)
    | extend Events = dcount_hll(hll)
    | order by Events desc
    | serialize rank = row_number()
    | extend dimension = iff(rank > 5, 'Other', dimension)
    | summarize merged = hll_merge(hll) by tostring(dimension)
    | project ["Build"] = dimension, Crashes = dcount_hll(merged), ["Build Sessions"] = "?";
cohortedTable
Как установить LAMP Stack - Security 5/5 на виртуальную машину Azure Linux VM
Как установить LAMP Stack - Security 5/5 на виртуальную машину Azure Linux VM
В предыдущей статье мы завершили установку базы данных, для тех, кто не знает.
Как установить LAMP Stack 1/2 на Azure Linux VM
Как установить LAMP Stack 1/2 на Azure Linux VM
В дополнение к нашему предыдущему сообщению о намерении Azure прекратить поддержку Azure Database для MySQL в качестве единого сервера после 16...
0
0
61
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Здесь я воспроизвел весь сценарий, создав фиктивные результаты, используя приведенный ниже код.

Код:

using System;
using System.Collections.Generic;
using Microsoft.ApplicationInsights;
using Microsoft.ApplicationInsights.Extensibility;
using Microsoft.ApplicationInsights.DataContracts;

namespace MyApp
{
    class Program
    {
        static void Main(string[] args)
        {
            // Initialize Application Insights with your Instrumentation Key
            TelemetryConfiguration configuration = new TelemetryConfiguration();
            configuration.ConnectionString = "InstrumentationKey=**************";
            TelemetryClient telemetryClient = new TelemetryClient(configuration);

            // Simulate multiple sessions with different build numbers
            for (int i = 1; i <= 100; i++) // Simulate 100 sessions
            {
                // Start tracking a new session with a unique build number
                var properties = new Dictionary<string, string> { { "BuildNumber", $"Build{i % 10}" } }; // Build numbers from Build0 to Build9
                telemetryClient.TrackEvent("SessionStart", properties);

                // Simulate a crash event with the same build number
                TrackCustomEvent(telemetryClient, "Crash", properties);
            }

            // Flush telemetry before exit
            telemetryClient.Flush();
            // Allow some time for flushing before shutdown
            System.Threading.Thread.Sleep(5000);
        }

        static void TrackCustomEvent(TelemetryClient telemetryClient, string eventName, IDictionary<string, string> properties)
        {
            var eventTelemetry = new EventTelemetry(eventName);

            // Add custom properties to the event
            foreach (var property in properties)
            {
                eventTelemetry.Properties[property.Key] = property.Value;
            }

            telemetryClient.TrackEvent(eventTelemetry);
        }
    }
}

  • Вот запрос, используемый в Application Insights Analytics для получения желаемого результата:
let mainTable = union pageViews, customEvents
    | where timestamp > ago(7d); // Filter data for the last 7 days, adjust as needed
mainTable
| extend BuildNumber = tostring(customDimensions["BuildNumber"])
| summarize CrashEvents = countif (name == "Crash"), TotalSessions = countif (name == "SessionStart") by BuildNumber
| order by TotalSessions desc

Результат:

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

let usg_events = dynamic(["Crash"]);
let mainTable = union pageViews, customEvents, requests
| extend name = replace("\n", "", name)
| where '*' in (usg_events) or name in (usg_events);
mainTable
| extend BuildNumber = tostring(customDimensions["Build"])
| summarize Crashes = countif (name in (usg_events)), TotalSessions = countif (name == "SessionStart") by BuildNumber
| order by TotalSessions desc
  • Удалены ненужные переменные (queryTable, cohortedTable). Извлекли BuildNumber напрямую из нестандартных размеров. Упрощен расчет Crashes, используя countif (name in (usg_events)) для подсчета случаев аварий.
  • Рассчитывается TotalSessions с помощью countif (name == "SessionStart"). Результаты упорядочил по TotalSessions в порядке убывания.

Спасибо, что нашли время сделать это. Это сработает, если я добавлю новое событие «SessionStart». Я пытаюсь сделать это без добавления этого события. Если это невозможно, я просто добавлю новое событие. Я отмечу как исправленное, потому что это сработает.

Michael Gustafson 05.04.2024 18:32

Рад тебя слышать. @Майкл Густафсон

Suresh Chikkam 24.04.2024 06:54

Другие вопросы по теме

Похожие вопросы

Как получить доступ к SQL-серверу Azure с помощью MSI в конвейере Azure DevOps?
Как настроить группу действий Azure на уровне подписки?
ОШИБКА: () Указанное значение для шифрованияWithCmk.enforcement было недействительным при попытке обновить службу поиска Azure
Как я могу агрегировать JSON с помощью потока данных ADF?
Подключение к данным сетки событий Azure Data Explorer
Команда запуска Azure CLI вызывает runshellscript — как получить выходные данные сценария оболочки
Портал Azure: как настроить идентификатор клиента и секрет клиента
Выбор динамической группы переменных на основе триггерного репозитория
Получает ошибку в коде Azure terraform: данный сервер не поддерживает функцию частной конечной точки. пожалуйста, создайте новый сервер с поддержкой частной конечной точки
Как отправить сообщение на устройство с самоподписанным сертификатом в качестве аутентификации в Azure IoT Hub через REST API