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

Azure Application Insights Query - How to calculate percentage of total

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

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

我可以轻松获得包含 ITEM 行和 COUNT 行的 table,但我无法弄清楚如何将总计(在本例中为 5)作为数字,以便我可以计算 % 列中的百分比.

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

有什么想法吗?谢谢。

创建这样的查询有点麻烦。

我是根据 AI 中的 customEvents table 完成的。所以看看你是否可以根据你的具体情况进行调整。

您必须创建一个包含记录总数的 table,然后您必须加入此 table。由于您只能在公共列上加入,因此您需要一个始终具有相同值的列。我为此选择了 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_))     

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

这输出:

我觉得下面的更直观。只需使用虚拟 属性 扩展集合并对其进行连接...

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

甚至不需要加入或创建包含您的总计的 table 只需计算您的总数并将其保存在 let 中即可。

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

然后您可以简单地在下一个 table 中添加一行,您需要通过以下方式计算百分比:

| extend total = totalEvents

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

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

其中 count_ 是由您大概在添加百分比之前执行的汇总 count() 创建的列。

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