Nota
O acesso a esta página requer autorização. Podes tentar iniciar sessão ou mudar de diretório.
O acesso a esta página requer autorização. Podes tentar mudar de diretório.
Aplica-se a: ✅Microsoft Fabric✅Azure Data Explorer✅Azure Monitor✅Microsoft Sentinel
Todos os tipos de dados escalares no Kusto têm um valor especial que representa um valor ausente. Esse valor é chamado de valor nuloou valor nulo.
Observação
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 T(null)literal nulo .
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), timespan(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.
Observação
Como o tipo string não oferece suporte a valores nulos, recomendamos o uso das funções isempty() e isnotempty().
Igualdade e desigualdade de valores nulos
-
Igualdade (
==): Aplicar o operador de igualdade a dois valores nulos produzbool(null). A aplicação do operador de igualdade a um valor nulo e a um valor não nulo produzbool(false). -
Desigualdade (
!=): Aplicar o operador de desigualdade a dois valores nulos produzbool(null). A aplicação do operador de desigualdade a um valor nulo e a um valor não nulo produzbool(true).
Por 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)
Realização
| Val | IsBiggerThan3 | IsBiggerThan3OrNull | IsEqualToNull | IsNotEqualToNull |
|---|---|---|---|---|
| 5 | verdadeiro | verdadeiro | falso | verdadeiro |
| nulo | nulo | verdadeiro | nulo | nulo |
Valores nulos e funções de agregação
Ao aplicar os operadores a seguir a entidades que incluem valores nulos, os valores nulos são ignorados e não são considerados no cálculo:
- covariância()
- covariânciase()
- Covariancep()
- Covariancepif()
- dcount()
- dcountif()
- make_bag()
- make_bag_if()
- make_list()
- make_list_if()
- make_set()
- make_set_if()
- Stdev()
- Stdevif()
- soma()
- sumif()
- variância()
- variânciase()
- variânciap()
- variancepif()
Valores nulos e o operador where
O onde o operador usar expressões booleanas para determinar se deve emitir cada registro de entrada para a saída. Este operador trata valores nulos como se estivessem bool(false). Os registros para os quais o predicado retorna o valor nulo são descartados e não aparecem na saída.
Por exemplo:
datatable(ival:int, sval:string)[5, "a", int(null), "b"]
| where ival != 5
Realização
| Ival | Sval |
|---|---|
| nulo | b |
Valores nulos e operadores binários
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 indicado em Exceções a esta regra, a regra é a seguinte:
Se um ou ambos os valores de entrada para o operador binário são valores nulos, então a saída do operador binário também é o valor nulo. Em outras palavras, o valor nulo é "pegajoso".
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 operador lógico AND (&&), se um dos valores for
bool(false), o resultado também serábool(false). - Para o operador lógico OR (
||), se um dos valores forbool(true), o resultado também serábool(true).
Por exemplo:
datatable(val:int)[5, int(null)]
| extend Add = val + 10
| extend Multiply = val * 10
Realização
| Val | Adicionar | Multiplicar |
|---|---|---|
| 5 | 15 | 50 |
| nulo | nulo | nulo |
Valores nulos e o operador lógico NOT (!)
O operador lógico NOT not() produz o valor bool(null) se o argumento for o valor nulo.
Valores nulos e o operador in
- O no operador comporta-se como uma OR lógica de comparações de igualdade.
- O operador
!incomporta-se como umANDlógico de comparações de desigualdade.
Valores nulos e ingestão de dados
Para a maioria dos tipos de dados, um valor ausente na fonte de dados produz um valor nulo na célula da tabela correspondente. No entanto, colunas de tipo string e formatos de dados CSV (ou semelhantes a CSV) são uma exceção a essa regra, e um valor ausente produz uma cadeia de caracteres vazia.
Por exemplo:
.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)
Realização
| um | b | isnull_a | isempty_a | strlen_a | isnull_b |
|---|---|---|---|---|---|
| falso | verdadeiro | 0 | verdadeiro | ||
| falso | falso | 1 | verdadeiro | ||
| um | 1 | falso | falso | 1 | falso |
Observação
- Se você executar a consulta acima em Kusto.Explorer, todos os valores
trueserão exibidos como1e todos os valoresfalseserão exibidos como0. - Kusto não oferece uma maneira de restringir a coluna de uma tabela de ter valores nulos. Em outras palavras, não há equivalente à restrição de
NOT NULLdo SQL.
Observação
Kusto não oferece uma maneira de restringir a coluna de uma tabela de ter valores nulos. Em outras palavras, não há equivalente à restrição de NOT NULL do SQL.