2017-10-06 53 views
0

我們將通過應用程序洞察從我們的應用程序收集使用度量(通過customEvents定義customMeasurements)。如果我們的(Windows)服務啓動,然後每天通過計時器收集數據,則會收集數據。如何總結應用程序洞察分析中的最大值

我知道,應用程序的見解並不意味着使用「處所」的軟件,但我們做吧;-)

所以我們得到的是安裝在我們的客戶的所有服務中的數據。每個客戶都有一個唯一的ID(GUID),它允許我們按客戶分組。 (FYI我們不知道哪些客戶是這樣的GUID的背後,它只是爲「分組」的客戶值)

事件看起來是這樣的:

enter image description here

  1. 我現在想group by customerId,
  2. 獲取特定度量值的最大值值
  3. 併爲所有客戶創建總和。

我得到了1和2,但已經不知道如何總結的最高值......

enter image description here

證明什麼,我試圖做我在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 

基本上相同,這裏也問過,但對於應用程序的見解:-) SQL: SUM the MAX values of results returned

感謝任何提示

+0

也*,我知道,應用程序的見解並不意味着用於「本地」軟件,但我們無論如何做「*不真實:)。應用程序見解適用於任何可以將數據發送到應用程序見解的遙測。唯一不起作用的地方是遙測無法離開的封閉網絡。對於內部部署應用程序,Web測試等一些應用程序見解功能將無法正常工作,因爲webtest無法在您的網絡中看到*。 –

回答

1

我得到了一個解決方案:

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  

希望這可以幫助其他人,因爲這樣的查詢語言不是那麼直觀...

反正讓我知道如果你有任何更好的解決方案,以解決這個問題...

+1

另外,如果您的自定義維度或指標不包含特殊字符,則可以簡化其他的東西,比如'extend CustomerId = tostring(customDimensions.CustomerId)' –