Azure Application Insights查询 - 如何计算总计百分比

时间:2016-10-12 16:27:56

标签: azure-application-insights ms-app-analytics

我试图在输出表中创建一行来计算总项目的百分比:

Something like this:
ITEM   |   COUNT   |   PERCENTAGE
item 1 |     4     |   80
item 2 |     1     |   20 

我可以很容易地获得一个包含ITEM和COUNT行的表格,但我无法弄清楚如何获得总数(在这种情况下为5)作为数字,因此我可以计算列%的百分比。

someTable
| where name == "Some Name"
| summarize COUNT = count() by ITEM = tostring( customDimensions.["SomePar"])
| project ITEM, COUNT, PERCENTAGE = (C/?)*100 

有什么想法吗?谢谢。

3 个答案:

答案 0 :(得分:7)

创建类似的查询有点麻烦。

我已经基于AI中的customEvents表完成了它。所以,看看你是否可以根据自己的具体情况进行调整。

您必须创建一个包含记录总数的表,然后您必须加入此表。由于您只能加入公共列,因此需要一个始终具有相同值的列。我为此选择appName。

所以整个查询看起来像:

let totalEvents = customEvents
//  | where name contains "Opened form"
    | summarize count() by appName
    | project appName, count_ ;
customEvents
//  | where name contains "Opened form"
    | join kind=leftouter totalEvents  on appName
    | summarize count() by name, count_
    | project name, totalCount = count_ , itemCount = count_1,  percentage = (todouble(count_1) * 100 / todouble(count_))     

如果您需要过滤器,则必须将其应用于两个表。

输出:

enter image description here

答案 1 :(得分:4)

我认为以下更直观。只需使用虚拟属性扩展该集合,然后对其进行连接...

requests
| summarize count()
| extend a="b" 
| join (
    requests
    | summarize count() by name
    | extend a="b"    
) on a 
| project name, percentage = (todouble(count_1) * 100 / todouble(count_)) 

答案 2 :(得分:0)

甚至没有必要进行联接或创建包含总数的表 只需计算您的总数,然后像这样保存即可。

let totalEvents = toscalar(customEvents
| where timestamp > "someDate"
    and name == "someEvent"
| summarize count());

然后,您可以简单地在下一张表中添加一行,您需要执行以下操作来计算百分比:

| extend total = totalEvents

这将在您的表中添加一个新列,其中填充了您计算出的总数。 之后,您可以按照其他两个答案中的说明计算百分比。

| extend percentages = todouble(count_)*100/todouble(total)

其中count_是您的summary count()创建的列,您大概在添加百分比之前会这样做。

希望这也会对某人有所帮助。