Valori Null
Si applica a: ✅Microsoft Fabric✅Azure Esplora dati✅ Azure Monitor✅Microsoft Sentinel
Tutti i tipi di dati scalari in Kusto hanno un valore speciale che rappresenta un valore mancante. Questo valore viene chiamato valore Null o Null.
Nota
Il string
tipo di dati non supporta valori Null.
Valori letterali Null
Il valore Null di un tipo scalare T è rappresentato nel linguaggio di query dal valore letterale T(null)
Null .
La query seguente restituisce una singola riga piena di valori Null:
print bool(null), datetime(null), dynamic(null), guid(null), int(null), long(null), real(null), double(null), timespan(null)
Predicati su valori Null
La funzione isnull()
scalare può essere usata per determinare se un valore scalare è il valore Null. La funzione isnotnull()
corrispondente può essere usata per determinare se un valore scalare non è il valore Null.
Nota
Poiché il string
tipo non supporta valori Null, è consigliabile usare le isempty()
funzioni e isnotempty()
.
Uguaglianza e disuguaglianza di valori Null
- Uguaglianza (
==
): l'applicazione dell'operatore di uguaglianza a due valori Null restituiscebool(null)
. L'applicazione dell'operatore di uguaglianza a un valore Null e un valore non Null restituiscebool(false)
. - Disuguaglianza (
!=
): l'applicazione dell'operatore di disuguaglianza a due valori Null restituiscebool(null)
. L'applicazione dell'operatore di disuguaglianza a un valore Null e un valore non Null restituiscebool(true)
.
Ad esempio:
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)
Output
val | IsBiggerThan3 | IsBiggerThan3OrNull | IsEqualToNull | IsNotEqualToNull |
---|---|---|---|---|
5 | true | true | false | true |
Null | Null | true | Null | Null |
Valori Null e funzioni di aggregazione
Quando si applicano gli operatori seguenti alle entità che includono valori Null, i valori Null vengono ignorati e non vengono inseriti nel calcolo:
- 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()
- varianza()
- varianceif()
Valori Null e where
operatore
L'operatore where usa espressioni booleane per determinare se generare ogni record di input nell'output. Questo operatore considera i valori Null come se fossero bool(false)
. I record per i quali il predicato restituisce il valore Null vengono eliminati e non vengono visualizzati nell'output.
Ad esempio:
datatable(ival:int, sval:string)[5, "a", int(null), "b"]
| where ival != 5
Output
ival | sval |
---|---|
Null | b |
Valori Null e operatori binari
Gli operatori binari sono operatori scalari che accettano due valori scalari e producono un terzo valore. Ad esempio, greater-than (>) e Boolean AND (&) sono operatori binari.
Per tutti gli operatori binari, ad eccezione di quanto indicato in Eccezioni a questa regola, la regola è la seguente:
Se uno o entrambi i valori di input per l'operatore binario sono valori Null, l'output dell'operatore binario è anche il valore Null. In altre parole, il valore Null è "sticky".
Eccezioni a questa regola
- Per gli operatori di uguaglianza (
==
) e disuguaglianza (!=
), se uno dei valori è Null e l'altro valore non è Null, il risultato èbool(false)
rispettivamente obool(true)
. - Per l'operatore AND logico (&&), se uno dei valori è
bool(false)
, il risultato è anchebool(false)
. - Per l'operatore OR logico (
||
), se uno dei valori èbool(true)
, il risultato è anchebool(true)
.
Ad esempio:
datatable(val:int)[5, int(null)]
| extend Add = val + 10
| extend Multiply = val * 10
Output
val | Aggiunta | Per |
---|---|---|
5 | 15 | 50 |
Null | Null | Null |
Valori Null e operatore LOGICO NOT (!
)
L'operatore NOT logico not() restituisce il valore bool(null)
se l'argomento è il valore Null.
Valori Null e in
operatore
- L'operatore in si comporta come un OR logico di confronti di uguaglianza.
- L'operatore
!in
si comporta come un confronto logicoAND
di disuguaglianza.
Valori Null e inserimento dati
Per la maggior parte dei tipi di dati, un valore mancante nell'origine dati produce un valore Null nella cella della tabella corrispondente. Tuttavia, le colonne di tipo string
e i formati di dati CSV (o simili a CSV) sono un'eccezione a questa regola e un valore mancante produce una stringa vuota.
Ad esempio:
.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)
Output
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
- Se si esegue la query precedente in Kusto.Explorer, tutti i
true
valori verranno visualizzati come1
e tutti ifalse
valori verranno visualizzati come0
. - Kusto non offre un modo per vincolare la colonna di una tabella dalla presenza di valori Null. In altre parole, non esiste alcun equivalente al vincolo di
NOT NULL
SQL.
Nota
Kusto non offre un modo per vincolare la colonna di una tabella dalla presenza di valori Null. In altre parole, non esiste alcun equivalente al vincolo di NOT NULL
SQL.