Valori Null
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 fattorizzati 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()
- variance()
- 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, maggiore di (>) e AND booleano (&&) 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 LOGICO OR (
||
), 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 | Add | Moltiplicazione |
---|---|---|
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 di 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 valori verranno visualizzati come e tutti i
true
valori verranno visualizzati come1
0
.false
- Kusto non offre un modo per limitare la colonna di una tabella dalla presenza di valori Null. In altre parole, non esiste alcun vincolo equivalente a SQL
NOT NULL
.
Nota
Kusto non offre un modo per limitare la colonna di una tabella dalla presenza di valori Null. In altre parole, non esiste alcun vincolo equivalente a SQL NOT NULL
.
Commenti e suggerimenti
https://aka.ms/ContentUserFeedback.
Presto disponibile: Nel corso del 2024 verranno gradualmente disattivati i problemi di GitHub come meccanismo di feedback per il contenuto e ciò verrà sostituito con un nuovo sistema di feedback. Per altre informazioni, vedereInvia e visualizza il feedback per