Share via


Null-värden

Alla skalära datatyper i Kusto har ett specialvärde som representerar ett värde som saknas. Det här värdet kallas null-värdet eller null.

Anteckning

Datatypen string stöder inte null-värden.

Null-literaler

Null-värdet för en skalär typ T representeras på frågespråket av nullliteralen T(null).

Följande fråga returnerar en enskild rad full med null-värden:

print bool(null), datetime(null), dynamic(null), guid(null), int(null), long(null), real(null), double(null), timespan(null)

Predikat för null-värden

Den skalära funktionen isnull() kan användas för att avgöra om ett skalärt värde är null-värdet. Motsvarande funktion isnotnull() kan användas för att avgöra om ett skalärt värde inte är null-värdet.

Anteckning

Eftersom typen string inte stöder null-värden rekommenderar vi att du använder isempty() funktionerna och isnotempty() .

Likhet och olikhet för null-värden

  • Likhet (==): Om likhetsoperatorn tillämpas på två null-värden får du bool(null). Om likhetsoperatorn tillämpas på ett null-värde och ett värde som inte är null ger det .bool(false)
  • Ojämlikhet (!=): Om du tillämpar olikhetsoperatorn på två null-värden får du bool(null). Om du tillämpar olikhetsoperatorn på ett null-värde och ett värde som inte är null ger det .bool(true)

Exempel:

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)

Resultat

val IsBiggerThan3 IsBiggerThan3OrNull IsEqualToNull IsNotequalToNull
5 true true falskt true
null null true null null

Null-värden och sammansättningsfunktioner

När du tillämpar följande operatorer på entiteter som innehåller null-värden ignoreras null-värdena och tas inte med i beräkningen:

Null-värden och operatorn where

Where-operatorn använder booleska uttryck för att avgöra om varje indatapost ska skickas till utdata. Den här operatorn behandlar null-värden som om de vore bool(false). Poster som predikatet returnerar null-värdet för tas bort och visas inte i utdata.

Exempel:

datatable(ival:int, sval:string)[5, "a", int(null), "b"]
| where ival != 5

Resultat

ival sval
null b

Null-värden och binära operatorer

Binära operatorer är skalära operatorer som accepterar två skalära värden och producerar ett tredje värde. Till exempel är större än (>) och booleska AND (&&) binära operatorer.

För alla binära operatorer, förutom vad som anges i Undantag från den här regeln, är regeln följande:

Om ett eller båda av värdena som matas in till den binära operatorn är null-värden är utdata för den binära operatorn också null-värdet. Med andra ord är null-värdet "sticky".

Undantag från den här regeln

  • För operatorerna likhet (==) och ojämlikhet (!=) är resultatet antingen bool(false) eller bool(true), om ett av värdena är null och det andra värdet inte är null.
  • För operatorn logisk AND (&&) är resultatet även bool(false)om ett av värdena är bool(false).
  • Om ett av värdena är för den logiska OR-operatorn (||) är bool(true)resultatet också bool(true).

Exempel:

datatable(val:int)[5, int(null)]
| extend Add = val + 10
| extend Multiply = val * 10

Resultat

val Lägg till Multiplicera
5 15 50
null null null

Null-värden och operatorn logisk NOT (!)

Den logiska NOT-operatorn not() ger värdet bool(null) om argumentet är null-värdet.

Null-värden och operatorn in

  • In-operatorn beter sig som en logisk ELLER av likhetsjämförelser.
  • Operatorn !in beter sig som en logisk AND av olikhetsjämförelser.

Null-värden och datainmatning

För de flesta datatyper genererar ett värde som saknas i datakällan ett null-värde i motsvarande tabellcell. Kolumner av typen string och CSV-dataformat (eller CSV-liknande) är dock ett undantag från den här regeln, och ett värde som saknas skapar en tom sträng.

Exempel:

.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)

Resultat

a b isnull_a isempty_a strlen_a isnull_b
    falskt true 0 true
    falskt falskt 1 true
a 1 falskt falskt 1 falskt

Anteckning

  • Om du kör ovanstående fråga i Kusto.Explorer visas alla true värden som 1och alla false värden visas som 0.
  • Kusto erbjuder inte något sätt att begränsa en tabells kolumn från att ha null-värden. Med andra ord finns det ingen motsvarighet till SQL:s NOT NULL villkor.

Anteckning

Kusto erbjuder inte något sätt att begränsa en tabells kolumn från att ha null-värden. Med andra ord finns det ingen motsvarighet till SQL:s NOT NULL villkor.