【问题标题】:Kusto | add column to show percentages of total库斯托 |添加列以显示总数的百分比
【发布时间】:2020-12-30 21:50:59
【问题描述】:

我还看到了其他几个与此类似的问题,但每个问题都略有不同,并且没有一个提供我能够适应我的情况的答案。我有一张这样的桌子:

let T = 
    datatable(Val1:string, Val2:string, Val3:bool)
    [
        '', 'false', 'false',
        'Yes', 'false', 'true',
        'No', 'false', 'false',
        'Yes', 'false', 'false'
    ]
;

我只想得到 Val3 为假的结果,按 Val1 和 Val2 汇总计数,然后扩展一列以显示每一行的整体百分比。我试过这样做:

T
| where Val3 == "false"
| summarize Count = count() by Val1, Val2
| let Total = sum(Count)
| extend Percentage = round(100.0 * Count/Total, 0)

这会引发错误"A recognition error occurred. Token: let" 我已经尝试了许多变体,例如:

T
| where Val3 == "false"
| summarize Count = count() by Val1, Val2
| extend Total = sum(Count)
| extend Percentage = round(100.0 * Count/Total, 0)

这会引发错误"Function 'sum' cannot be invoked in current context"。如果我将extend Total 更改为summarize Total,那么该行可以工作,但它会在下一行引发关于无法识别 Count 的错误。如果我像这样在汇总行上添加计数:

| summarize Total = sum(Count), Count

然后我收到错误"Non valid aggregation function is used after summarize"。 这是我想要的输出:

看起来这比应该做的要困难得多。我错过了什么?

【问题讨论】:

    标签: azure-data-explorer kql


    【解决方案1】:

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

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

    或者,遵循相同的概念 - 这里有一个替代方案:

    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)
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2022-01-09
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多