Application Insights - отслеживание пользовательского события с массивом данных в качестве свойства - PullRequest
0 голосов
/ 26 января 2020

У меня есть веб-приложение с функцией поиска.

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

В настоящее время я отслеживаю данные следующим образом:

telemetryClient.TrackEvent(Names.RepositorySearch, new Dictionary<string, string>()
                {
                    {PropertyKeys.OrganizationName, repositoryQueryParameter.OrganizationName},
                    {PropertyKeys.RepositoryName, repositoryQueryParameter.RepositoryName},
                    {PropertyKeys.Query, query },
                    {PropertyKeys.IsRegex, isRegex.ToString()},
                    {PropertyKeys.ResultsCount, resultsCount.ToString()},
                    {PropertyKeys.QueryExecutionTime, elapsed.TotalMilliseconds.ToString()},
                });

Я отслеживаю полный запрос, который немного отличается от списка токенов / ключевых слов.

Я знаю, что мог бы просто опубликуйте еще одно маленькое событие для каждого ключевого слова в al oop, но это кажется неприятным ...

1 Ответ

2 голосов
/ 26 января 2020

Если вы JSON кодируете параметры поиска, вы можете использовать функцию extract_ json () , чтобы распаковать их в запросе Kusto.

Код отслеживания:

telemetryClient.TrackEvent(
    "RepositorySearch",
    new Dictionary<string,string> {
        // JSON literal used for example purposes.
        // Use your favorite JSON serializer in real life.
        ["SearchTerms"] = "[ \"Term1\", \"Term2\" ]",
    }
);

Запрос Kusto:

customEvents
| where name == "RepositorySearch" 
| extend searchTerms = parse_json(customDimensions.SearchTerms) 

Некоторые из визуализаторов данных App Insights достаточно умны, чтобы автоматически распознавать и отображать JSON списки / объекты. Если вы просто хотите визуально проверить данные, пользовательский запрос может даже не понадобиться.

...