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

Azure Application Insights查询-如何计算占总数的百分比,azure,azure-application-insights,ms-app-analytics,Azure,Azure Application Insights,Ms App Analytics,我试图在输出表中创建一行,用于计算项目总数的百分比: Something like this: ITEM | COUNT | PERCENTAGE item 1 | 4 | 80 item 2 | 1 | 20 我可以很容易地得到一个包含ITEM和COUNT行的表,但我不知道如何将total(在本例中为5)作为一个数字,这样我就可以计算列%中的百分比 someTable | where name == "Some Name" | sum

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

Something like this:
ITEM   |   COUNT   |   PERCENTAGE
item 1 |     4     |   80
item 2 |     1     |   20 
我可以很容易地得到一个包含ITEM和COUNT行的表,但我不知道如何将total(在本例中为5)作为一个数字,这样我就可以计算列%中的百分比

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

有什么想法吗?谢谢。

创建这样的查询有点麻烦

我已经根据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_))     
如果需要筛选器,则必须将其应用于两个表

这将产生:


我认为以下内容更直观。只需使用一个伪属性扩展集合,并在该集合上进行连接

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_)) 

甚至不需要进行联接或创建包含总计的表 只需计算你的总数,并将其保存在一个像这样的let中

let totalEvents = toscalar(customEvents
| where timestamp > "someDate"
    and name == "someEvent"
| summarize count());
然后,您只需将一行添加到下一个表中,在该表中,您需要通过执行以下操作来计算百分比:

| extend total = totalEvents
这将向您的表中添加一个新的列,其中填入您计算的总数。 之后,您可以计算其他两个答案中所述的百分比

| extend percentages = todouble(count_)*100/todouble(total)
其中count_u是由您的summary count()创建的列,您可能在添加百分比之前执行此操作


希望这也能帮助别人。

太棒了。让它完全按照我想要的方式工作。我的“加入”游戏很弱,所以我在那个方向的任何尝试都失败了。非常感谢。