Compartir a través de


Valores NULL

Todos los tipos de datos escalares de Kusto tienen un valor especial que representa un valor que falta. Este valor se denomina valor NULL o NULL.

Nota

El string tipo de datos no admite valores NULL.

Literales NULL

El valor null de un tipo escalar T se representa en el lenguaje de consulta mediante el literal T(null)null .

La consulta siguiente devuelve una sola fila llena de valores NULL:

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

Predicados en valores NULL

La función isnull() escalar se puede usar para determinar si un valor escalar es el valor NULL. La función isnotnull() correspondiente se puede usar para determinar si un valor escalar no es el valor NULL.

Nota

Dado que el string tipo no admite valores NULL, se recomienda usar las isempty() funciones y isnotempty() .

Igualdad y desigualdad de valores NULL

  • Igualdad (==): al aplicar el operador de igualdad a dos valores NULL, se produce bool(null). La aplicación del operador de igualdad a un valor NULL y un valor distinto de NULL produce bool(false).
  • Desigualdad (!=): aplicar el operador de desigualdad a dos valores NULL produce bool(null). La aplicación del operador de desigualdad a un valor NULL y un valor distinto de NULL produce bool(true).

Por ejemplo:

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)

Salida

Val IsBiggerThan3 IsBiggerThan3OrNull IsEqualToNull IsNotequalToNull
5 true true false true
null null true null null

Valores NULL y funciones de agregación

Al aplicar los operadores siguientes a entidades que incluyen valores NULL, se omiten los valores NULL y no se tienen en cuenta en el cálculo:

Valores NULL y el where operador

El operador where usa expresiones booleanas para determinar si se emite cada registro de entrada a la salida. Este operador trata valores NULL como si fueran bool(false). Los registros para los que el predicado devuelve el valor NULL se quitan y no aparecen en la salida.

Por ejemplo:

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

Salida

ival sval
null b

Valores NULL y operadores binarios

Los operadores binarios son operadores escalares que aceptan dos valores escalares y generan un tercer valor. Por ejemplo, mayor que (>) y Boolean AND (&&) son operadores binarios.

Para todos los operadores binarios, excepto como se indica en Excepciones a esta regla, la regla es la siguiente:

Si uno o ambos de los valores que se introducen en el operador binario son valores NULL, la salida del operador binario también es el valor null. En otras palabras, el valor null es "pegajoso".

Excepciones a esta regla

  • Para los operadores de igualdad (==) y desigualdad (!=), si uno de los valores es null y el otro valor no es NULL, el resultado es bool(false) o bool(true), respectivamente.
  • Para el operador LÓGICO AND (&&), si uno de los valores es bool(false), el resultado también bool(false)es .
  • Para el operador OR lógico (||), si uno de los valores es bool(true), el resultado también bool(true)es .

Por ejemplo:

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

Salida

Val Sumar Multiplicar
5 15 50
null null null

Valores NULL y el operador NOT lógico (!)

El operador NOT lógico not() produce el valor bool(null) si el argumento es el valor NULL.

Valores NULL y el in operador

  • El operador in se comporta como un OR lógico de comparaciones de igualdad.
  • El !in operador se comporta como una lógica AND de comparaciones de desigualdad.

Ingesta de datos y valores NULL

Para la mayoría de los tipos de datos, un valor que falta en el origen de datos genera un valor NULL en la celda de tabla correspondiente. Sin embargo, las columnas de los formatos de datos de tipo string y CSV (o de tipo CSV) son una excepción a esta regla y un valor que falta genera una cadena vacía.

Por ejemplo:

.create table T(a:string, b:int)

.ingest inline into table T
[,]
[ , ]
[a,1]

T
| project a, b, isnull_a=isnull(a), isempty_a=isempty(a), stlen_a=strlen(a), isnull_b=isnull(b)

Salida

a b isnull_a isempty_a strlen_a isnull_b
    false true 0 true
    false false 1 true
a 1 false false 1 false

Nota

  • Si ejecuta la consulta anterior en Kusto.Explorer, todos los true valores se mostrarán como 1y todos los false valores se mostrarán como 0.
  • Kusto no ofrece una manera de restringir la columna de una tabla de tener valores NULL. En otras palabras, no hay ningún equivalente a la restricción de NOT NULL SQL.

Nota

Kusto no ofrece una manera de restringir la columna de una tabla de tener valores NULL. En otras palabras, no hay ningún equivalente a la restricción de NOT NULL SQL.