10

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

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 

有任何想法吗?谢谢你。

4

3 回答 3

8

创建这样的查询有点混乱。

我是根据 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_))     

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

这输出:

在此处输入图像描述

于 2016-10-14T08:57:33.463 回答
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_)) 
于 2017-10-06T05:23:43.993 回答
3

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

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

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

| extend total = totalEvents

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

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

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

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

于 2020-11-18T12:30:30.860 回答