0

我们将通过应用程序洞察力从我们的应用程序中收集使用指标(即通过 customEvents 的 customMeasurements)。如果我们的(Windows)服务启动,然后每天通过计时器收集数据。

我知道应用程序洞察力不适用于“本地”软件,但无论如何我们都会这样做;-)

因此,我们从客户端安装的所有服务中获取数据。每个客户都有一个唯一的 ID (GUID),它允许我们按客户分组。(仅供参考,我们不知道该指南背后的客户,这只是客户“分组”的值)

事件如下所示:

在此处输入图像描述

  1. 我现在想按 customerId 分组,
  2. 获取特定 metricValue 的最大值
  3. 并为所有客户创建总和。

我已经得到 1 和 2 但不知道如何求和最大值...

在此处输入图像描述

演示我正在尝试做什么我在 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

感谢您的任何提示

4

1 回答 1

2

我有一个解决方案:

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    

希望这对其他人有所帮助,因为这种查询语言不是那么直观......

无论如何,让我知道你是否有更好的解决方案来解决这个问题......

于 2017-10-06T14:45:07.100 回答