GitHub在 GitHub中添加内容: 在线编辑

Null 值

Kusto 中的所有标量数据类型都具有表示缺失值的特殊值。 此值称为 null 值null

  • string 数据类型不支持空值。

空字面值

标量类型 T 的空值在查询语言中由空字面值 T(null)表示。 以下查询返回包含空值的单行:

print bool(null), datetime(null), dynamic(null), guid(null), int(null), long(null), real(null), double(null), time(null)

空值的谓词

标量函数 isnull() 可用于确定标量值是否为空值。 相应的函数 isnotnull() 可用于确定标量值是否不是空值。

由于 string 类型不支持空值,因此建议使用 isempty()isnotempty() 函数。

空值的等式和不等式

  • 等同性 (==): 将等同性运算符应用于两个空值会产生 bool(null)。 将等式运算符应用于空值和非空值会生成 bool(false)
  • 不等式 (!=): 将不等式运算符应用于两个空值会产生 bool(null)。 将不等式运算符应用于空值和非空值会生成 bool(true)

示例:

datatable(val:int)[5, int(null)]
| extend IsBiggerThan3 = val > 3
| extend IsBiggerThan3OrNull = val > 3 or isnull(val)
| extend IsEqualToNull = val == int(null)
| extend IsNotEqualToNull = val != int(null)

结果

val IsBiggerThan3 IsBiggerThan3OrNull IsEqualToNull IsNotEqualTo空
5
空值 空值 空值 空值

空值和 where 查询运算符

where 运算符 使用布尔表达式来确定是否将每个输入记录发送到输出。 此运算符将空值视为 bool(false)。 将删除谓词返回空值的记录,并且这些记录不会显示在输出中。

示例:

datatable(ival:int, sval:string)[5, "a", int(null), "b"]
| where ival != 5

结果

伊瓦尔 斯瓦尔
空值 b

二进制运算符和空值

二进制运算符是接受两个标量值并生成第三个值的标量运算符。 For example, greater-than (>) and Boolean AND (&&) are binary operators.

对于所有二进制运算符,除 下面说明外,该规则如下所示:
如果输入到二进制运算符的一个或两个值都是空值,那么二进制运算符的输出也是空值。 换言之,空值为 "粘性"。

此规则的例外

  • 对于等式 (==) 和等式 (!=) 运算符,如果其中一个值为空,而另一个值不为空,那么结果分别为 bool(false)bool(true)
  • For the logical AND (&&) operator, if one of the values is bool(false), the result is also bool(false).
  • 对于逻辑 OR (||) 运算符,如果其中一个值为 bool(true),那么结果也是 bool(true)

示例

datatable(val:int)[5, int(null)]
| extend Add = val + 10
| extend Multiply = val * 10

结果

val 添加
5 15 日 50
空值 空值 空值

空值和 in 运算符

  • 在运算符中 的行为类似于等同性比较的逻辑 OR。
  • 运算符中的! 行为类似于不等式比较的逻辑 AND。