GitHubContribuir no GitHub: Editar on-line

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 string nã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 produz bool(null). Aplicar o operador de igualdade a um valor nulo e um valor não nulo produz bool(false).
  • Desigualdade (!=): Aplicando o operador de desigualdade a dois valores nulos produz bool(null). A aplicação do operador de desigualdade a um valor nulo e um valor não nulo produz bool(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) ou bool(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 for bool(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.