Condividi tramite


Valori Null

Si applica a: ✅Microsoft Fabric✅Azure Esplora dati Azure MonitorMicrosoft 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 restituisce bool(null). L'applicazione dell'operatore di uguaglianza a un valore Null e un valore non Null restituisce bool(false).
  • Disuguaglianza (!=): l'applicazione dell'operatore di disuguaglianza a due valori Null restituisce bool(null). L'applicazione dell'operatore di disuguaglianza a un valore Null e un valore non Null restituisce bool(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:

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 o bool(true).
  • Per l'operatore AND logico (&&), se uno dei valori è bool(false), il risultato è anche bool(false).
  • Per l'operatore OR logico (||), se uno dei valori è bool(true), il risultato è anche bool(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 logico AND 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 come 1e tutti i false valori verranno visualizzati come 0.
  • 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.