我试图在输出表中创建一行来计算总项目的百分比:
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
有什么想法吗?谢谢。
答案 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_))
如果您需要过滤器,则必须将其应用于两个表。
输出:
答案 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()创建的列,您大概在添加百分比之前会这样做。
希望这也会对某人有所帮助。