Valores NULL
Se aplica a: ✅Microsoft Fabric✅Azure Data Explorer✅Azure Monitor✅Microsoft Sentinel
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 NULL T(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 (
==
): si se aplica el operador de igualdad a dos valores NULL, se producebool(null)
. La aplicación del operador de igualdad a un valor NULL y un valor distinto de NULL producebool(false)
. - Desigualdad (
!=
): aplicar el operador de desigualdad a dos valores NULL producebool(null)
. La aplicación del operador de desigualdad a un valor NULL y un valor distinto de NULL producebool(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 | nulo |
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 factorizarán en el cálculo:
- count()
- count_distinct()
- countif()
- dcount()
- dcountif()
- make_bag()
- make_bag_if()
- make_list()
- make_list_if()
- make_set()
- make_set_if()
- stdev()
- stdevif()
- sum()
- sumif()
- variance()
- varianceif()
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 los 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 |
---|---|
nulo | 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 "sticky".
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 esbool(false)
obool(true)
, respectivamente. - Para el operador LÓGICO AND (&&), si uno de los valores es
bool(false)
, el resultado tambiénbool(false)
es . - Para el operador LÓGICO OR (
||
), si uno de los valores esbool(true)
, el resultado tambiénbool(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 | nulo |
Valores NULL y el operador LÓGICO NOT (!
)
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 una or lógica de comparaciones de igualdad.
- El
!in
operador se comporta como una lógicaAND
de comparaciones de desigualdad.
Valores NULL y ingesta de datos
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 formato 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 como1
y todos losfalse
valores se mostrarán como0
. - 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.