Azure data explorer Kusto |添加列以显示占总数的百分比

Azure data explorer Kusto |添加列以显示占总数的百分比,azure-data-explorer,kql,Azure Data Explorer,Kql,我见过其他几个类似的问题,但每个问题都略有不同,没有一个答案是我能够适应我的情况。我有一张这样的桌子: let T = datatable(Val1:string, Val2:string, Val3:bool) [ '', 'false', 'false', 'Yes', 'false', 'true', 'No', 'false', 'false', 'Yes', 'false', 'false' ]

我见过其他几个类似的问题,但每个问题都略有不同,没有一个答案是我能够适应我的情况。我有一张这样的桌子:

let T = 
    datatable(Val1:string, Val2:string, Val3:bool)
    [
        '', 'false', 'false',
        'Yes', 'false', 'true',
        'No', 'false', 'false',
        'Yes', 'false', 'false'
    ]
;
| summarize Total = sum(Count), Count
我尝试过这样做:

T
| where Val3 == "false"
| summarize Count = count() by Val1, Val2
| let Total = sum(Count)
| extend Percentage = round(100.0 * Count/Total, 0)
出现识别错误。Token:let“”,我已经尝试了许多类似的变体:

T
| where Val3 == "false"
| summarize Count = count() by Val1, Val2
| extend Total = sum(Count)
| extend Percentage = round(100.0 * Count/Total, 0)
它抛出错误
“无法在当前上下文中调用函数'sum'”
。如果我将
extend Total
更改为
summary Total
,则该行可以工作,但它会抛出一个错误,即无法识别下一行的计数。如果我在汇总行添加Count,如下所示:

let T = 
    datatable(Val1:string, Val2:string, Val3:bool)
    [
        '', 'false', 'false',
        'Yes', 'false', 'true',
        'No', 'false', 'false',
        'Yes', 'false', 'false'
    ]
;
| summarize Total = sum(Count), Count
然后我得到一个错误
“汇总后使用了无效的聚合函数”
。 这是我想要的输出:


看起来这比应该的困难多了。我遗漏了什么?

您可以使用子查询计算百分比,以获得总数,并将其传递到
toscalar()
。在下面的示例中,我还使用了
as
操作符

  • toscalar()
  • 作为
    操作员:
或者,遵循相同的概念-这里有一个替代方案:

datatable(Val1:string, Val2:string, Val3:bool)
[
    '', 'false', 'false',
    'Yes', 'false', 'true',
    'No', 'false', 'false',
    'Yes', 'false', 'false'
]
| where Val3 == "false"
| summarize Count = count() by Val1, Val2
| as T
| extend Percentage = round(100.0 * Count / toscalar(T | summarize sum(Count)), 2)