Valores nulos
Todos os tipos de dados escalares no Kusto têm um valor especial que representa um valor omisso Esse valor é chamado de valor nuloou nulo.
- O tipo de dados
stringnão suporta valores nulos.
Literais nulos
O valor nulo de um tipo escalar T é representado na linguagem de consulta pelo literal nulo T(null). A consulta a seguir retorna uma única linha cheia de valores nulos:
print bool(null), datetime(null), dynamic(null), guid(null), int(null), long(null), real(null), double(null), time(null)
Predicados em valores nulos
A função escalar isnull() pode ser usada para determinar se um valor escalar é o valor nulo. A função correspondente isnotnull() pode ser usada para determinar se um valor escalar não é o valor nulo.
Como o tipo string não suporta valores nulos, é recomendado usar as funções isempty() e isnotempty() .
Igualdade e desigualdade de valores nulos
- Igualdade (
==): aplicar o operador de igualdade a dois valores nulos produzbool(null). Aplicar o operador de igualdade a um valor nulo e um valor não nulo produzbool(false). - Desigualdade (
!=): Aplicando o operador de desigualdade a dois valores nulos produzbool(null). A aplicação do operador de desigualdade a um valor nulo e um valor não nulo produzbool(true).
Exemplo:
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)
Resultados
| val | IsBiggerThan3 | IsBiggerThan3OrNull | IsEqualToNull | IsNotEqualToNulo |
|---|---|---|---|---|
| 5 | verdadeiro | verdadeiro | Não | verdadeiro |
| nulo | nulo | verdadeiro | nulo | nulo |
Valores nulos e o operador de consulta where
O em que o operador usa expressões booleanas para determinar se cada registro de entrada deve ser emitido para a saída Esse operador trata valores nulos como se eles fossem bool(false) Registros para os quais o predicado retorna o valor nulo são eliminados e não aparecem na saída.
Exemplo:
datatable(ival:int, sval:string)[5, "a", int(null), "b"]
| where ival != 5
Resultados
| ival | sval |
|---|---|
| nulo | b |
Operadores binários e valores nulos
Operadores binários são operadores escalares que aceitam dois valores escalares e produzem um terceiro valor. Por exemplo, maior que (>) e booleano E (& &) são operadores binários..
Para todos os operadores binários, exceto conforme observado abaixo, a regra é a seguinte:
Se um ou ambos os valores de entrada para o operador binário forem valores nulos, a saída do operador binário também será o valor nulo. Em outras palavras, o valor nulo é "fixo".
Exceções a esta regra
- Para os operadores de igualdade (
==) e desigualdade (!=), se um dos valores for nulo e o outro valor não for nulo, o resultado serábool(false)oubool(true), respectivamente. - Para o AND lógico (& &) Se um dos valores for
bool(false), o resultado também serábool(false). - Para o operador OR (
||) lógico, se um dos valores forbool(true), o resultado também serábool(true).
Exemplo
datatable(val:int)[5, int(null)]
| extend Add = val + 10
| extend Multiply = val * 10
Resultados
| val | Incluir | Multiplicar |
|---|---|---|
| 5 | 15 | 50 |
| nulo | nulo | nulo |
Valores nulos e o operador in
- O no operador comporta-se como um OR lógico de comparações de igualdade
- O operador! in se comporta como um AND lógico de comparações de desigualdade.