数值运算符

适用于:✅Azure 数据资源管理器Azure MonitorMicrosoft Sentinel

类型 intlongreal 表示数值类型。 可以在这些类型对之间使用以下运算符:

运算符 说明 示例
+ 添加 3.14 + 3.14ago(5m) + 5m
- 0.23 - 0.22,
* 相乘 1s * 52 * 2
/ 10m / 1s4 / 2
% 取模 4 % 2
< Less 1 < 1010sec < 1hnow() < datetime(2100-01-01)
> Greater 0.23 > 0.2210min > 1secnow() > ago(1d)
== 等于 1 == 1
!= 不等于 1 != 0
<= Less or Equal 4 <= 5
>= Greater or Equal 5 >= 4
in 等于某个元素 请参阅此处
!in 不等于任何元素 请参阅此处

注意

若要从一种数值类型转换为另一种数值类型,请使用 to*() 函数。 有关示例,请参阅 tolong()toint()

算术运算的类型规则

算术运算结果的数据类型由操作数的数据类型确定。 如果其中一个操作数的类型为 real,则结果的类型为 real。 如果两个操作数都是整数类型(intlong),则结果将为类型 long

鉴于这些规则,仅涉及整数的除法运算结果将被截断为整数,而它可能并不总是你所需要的。 若要避免结果被截断,请在执行操作之前,使用 todouble() 将至少一个整数值转换为 real

以下示例演示操作数类型如何影响除法运算中的结果类型。

操作 结果 说明
1.0 / 2 0.5 其中一个操作数的类型为 real,因此结果为 real
1 / 2.0 0.5 其中一个操作数的类型为 real,因此结果为 real
1 / 2 0 两个操作数的类型都是 int,因此结果为 int。 此时会进行整数除法,并且会截断小数,因此会按预期生成 0 而不是 0.5
real(1) / 2 0.5 若要避免由整数除法引起的截断,请使用 real() 函数先将其中一个 int 操作数转换为 real

与取模运算符有关的注释

两个数字的取模始终在 Kusto 中返回一个小的非负数。 因此,两个数字的取模(N % D)如下:0 ≤ (N % D) < abs(D)。

例如,以下查询:

print plusPlus = 14 % 12, minusPlus = -14 % 12, plusMinus = 14 % -12, minusMinus = -14 % -12

生成以下结果:

plusPlus minusPlus plusMinus minusMinus
2 10 2 10