You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Kusto查询百分比计算结果异常问题排查

问题原因及解决方案

问题根源

你遇到的是Kusto的整数除法特性:当两个整数类型的数值相除时,Kusto会直接舍去小数部分,只返回整数结果。你的CurrentNull和CurrentRows都是通过toint()转换的整数类型,所以12517/352393的计算结果会被取整为0,再乘以100自然还是0。

解决方法

只需要将其中一个操作数转换为浮点类型(比如real或decimal),强制触发浮点除法即可得到正确的百分比。以下是两种修改后的查询示例:

方式1:将被除数转为real类型

customEvents
| where name == "Nulls"
| project timestamp,    
    Column = tostring(customDimensions["Column"]),
    CurrentNull = toint(customDimensions["CurrentNull"]),
    PreviousNull = toint(customDimensions["PreviousNull"]),
    CurrentRows = toint(customDimensions["CurrentRows"]),
    PreviousRows = toint(customDimensions["PreviousRows"])    
| distinct timestamp, Column, CurrentNull, PreviousNull, CurrentRows, PreviousRows
| extend Delta = CurrentNull - PreviousNull,
         CurrentNullPercent = (toreal(CurrentNull)/CurrentRows) * 100,
         PreviousNullPercent = (toreal(PreviousNull)/PreviousRows) * 100
| distinct timestamp, Column, CurrentNull, PreviousNull, Delta, CurrentNullPercent, CurrentRows
| order by Delta desc

方式2:调整计算顺序(先乘后除)

如果担心数值溢出(你的场景中数值较小,不会有问题),也可以先乘以100再做除法,同时确保至少一个操作数为浮点类型:

customEvents
| where name == "Nulls"
| project timestamp,    
    Column = tostring(customDimensions["Column"]),
    CurrentNull = toint(customDimensions["CurrentNull"]),
    PreviousNull = toint(customDimensions["PreviousNull"]),
    CurrentRows = toint(customDimensions["CurrentRows"]),
    PreviousRows = toint(customDimensions["PreviousRows"])    
| distinct timestamp, Column, CurrentNull, PreviousNull, CurrentRows, PreviousRows
| extend Delta = CurrentNull - PreviousNull,
         CurrentNullPercent = (CurrentNull * 100) / toreal(CurrentRows),
         PreviousNullPercent = (PreviousNull * 100) / toreal(PreviousRows)
| distinct timestamp, Column, CurrentNull, PreviousNull, Delta, CurrentNullPercent, CurrentRows
| order by Delta desc

上述两种方式都能让12517/352393 * 100得到正确的近似3的结果。

内容的提问来源于stack exchange,提问作者user989988

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.12 19:01:19