如何在KQL的summarize子句中复用countif()的计算结果?
KQL中summarize子句避免重复计算的方法及问题原因
你不需要重复编写countif(Location == "US")这类语句,有简单的方法可以避免重复计算,同时解决你遇到的报错问题。
可行的优化写法
先通过summarize计算出基础的聚合值,再用extend子句基于这些值计算百分比:
SigninLogs | project TimeGenerated, CorrelationId, Location | summarize US = countif(Location == "US"), Outside_US = countif(Location != "US"), Total = count() by bin(TimeGenerated, 1h) | extend USPercentage = round(100.0 * US / Total, 2), NonUSPercentage = round(100.0 * Outside_US / Total, 2)
为什么直接引用会报错
KQL的summarize运算符对所有聚合列的计算是并行独立的,同一个summarize块内的各个聚合表达式之间没有依赖关系,也不能互相引用彼此的计算结果。
你尝试在同一个summarize里用US来计算百分比时,US本身是这个块里正在计算的列,此时它的结果还未生成,自然无法被其他表达式解析,所以会出现Failed to resolve scalar expression named 'US'的错误。
内容的提问来源于stack exchange,提问作者Razi
相关产品推荐
相关产品推荐

