2017-10-06 7 views
0

Nous allons collecter des métriques d'utilisation (c'est-à-dire des mesures personnalisées via customEvents) à partir de notre application via des informations sur les applications. Les données sont collectées si notre service (Windows) démarre et ensuite quotidiennement via une minuterie.comment faire la somme des valeurs maximales dans l'application insights analytics

Je sais que des idées d'applications ne sont pas destinées à utiliser pour « sur place » logiciel, mais nous le faisons de toute façon ;-)

Nous obtenons donc les données de tous les services qui sont installés chez nos clients. Chaque client a un identifiant unique (GUID) qui nous permet de grouper par client. (FYI nous ne savons pas quel client est derrière ce guid, il est juste une valeur pour « regroupement » par le client)

l'événement ressemble à ceci:

enter image description here

  1. Je veux maintenant group by customerId,
  2. obtenir la valeur maximale pour un métrique spécifique
  3. et de créer la somme pour tous les clients.

je suis arrivé 1 et 2 déjà, mais ont aucune idée de comment additionner les valeurs max ...

enter image description here

démontrerai ce que je suis en train de faire, j'ai ajouté un exemple dans SQL:

CREATE TABLE [dbo].[metricData] 
(
    [RecId] [int] IDENTITY(1,1) NOT NULL, 
    [customerId] [int], 
    [metricValue1] [int], 
    [metricValue2] [int] 
) 


INSERT INTO [dbo].[metricData]  VALUES (1234, 1,1) 
INSERT INTO [dbo].[metricData]  VALUES (1234, 1,2) 
INSERT INTO [dbo].[metricData]  VALUES (1234, 1,1) 
INSERT INTO [dbo].[metricData]  VALUES (2345, 6,4) 
INSERT INTO [dbo].[metricData]  VALUES (2345, 8,7) 
INSERT INTO [dbo].[metricData]  VALUES (3456, 1,1) 
INSERT INTO [dbo].[metricData]  VALUES (3456, 1,2) 
INSERT INTO [dbo].[metricData]  VALUES (3456, 1,1) 
INSERT INTO [dbo].[metricData]  VALUES (4576, 20,30) 


select sum(maxVal1),sum(maxVal2) from 
(
    select max(metricValue1) as maxVal1, max(metricValue2) as maxVal2 from metricData 
    group by customerId 
) t 

fondamentalement les mêmes que également demandé, mais pour un aperçu application :-) SQL: SUM the MAX values of results returned

Merci pour toutes les indications

+0

aussi, * "Je sais que les aperçus des applications ne sont pas destinés à être utilisés sur des logiciels" sur site ", mais nous le faisons de toute façon" * n'est pas vrai :). Application Insights est destiné à la télémétrie sur tout ce qui peut envoyer des données aux informations d'application. le seul endroit où il ne fonctionnera pas est à l'intérieur d'un réseau fermé où la télémétrie ne peut pas sortir. Pour une application sur site, certaines fonctionnalités d'analyse d'application, telles que les tests Web, ne fonctionneront pas, car le test Web ne peut pas voir * à l'intérieur * de votre réseau. –

Répondre

1

je suis arrivé une solution:

customEvents 
|where name == "usageMetrics" 
|extend cn = tostring(customDimensions.["CustomerId"]) 
|summarize maxValTotal= max(toint(customMeasurements.['metric_Total'])), maxValFree= max(toint(customMeasurements.['metric_Free'])) by cn 
|summarize dcount(cn),sum(maxValTotal), sum(maxValFree) 
|render barchart kind=unstacked  

Hope this helps quelqu'un d'autre, comme ce langage de requête est pas si intuitive ...

laissez-moi quand même savoir si vous avez de meilleures solutions à ce problème ...

+1

également, si votre dimension ou métrique personnalisée ne contient pas de caractères spéciaux, vous pouvez simplifier d'autres choses, comme 'étendre CustomerId = tostring (customDimensions.CustomerId)' –