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

mpn*_*nap 6 azure-application-insights ms-app-analytics

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

Something like this:
ITEM   |   COUNT   |   PERCENTAGE
item 1 |     4     |   80
item 2 |     1     |   20 
Run Code Online (Sandbox Code Playgroud)

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

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

有任何想法吗?谢谢.

Pet*_*ons 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_))     
Run Code Online (Sandbox Code Playgroud)

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

这输出:

在此输入图像描述


小智 5

我认为跟随更为直观。只需使用虚拟属性扩展集合并对其进行连接...

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_)) 
Run Code Online (Sandbox Code Playgroud)


Mav*_*1st 5

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

let totalEvents = toscalar(customEvents
| where timestamp > "someDate"
    and name == "someEvent"
| summarize count());
Run Code Online (Sandbox Code Playgroud)

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

| extend total = totalEvents
Run Code Online (Sandbox Code Playgroud)

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

| extend percentages = todouble(count_)*100/todouble(total)
Run Code Online (Sandbox Code Playgroud)

其中 count_ 是您汇总 count() 创建的列,您可能在添加百分比之前执行此操作。

希望这也能帮助某人。