Null-värden
Gäller för: ✅Microsoft Fabric✅Azure Data Explorer✅Azure Monitor✅Microsoft Sentinel
Alla skalära datatyper i Kusto har ett särskilt värde som representerar ett värde som saknas. Det här värdet kallas null-värdeteller null-.
Not
Datatypen string
stöder inte null-värden.
Null-literaler
Null-värdet för en skalär typ T- representeras i frågespråket av null-literalen T(null)
.
Följande fråga returnerar en enskild rad full av 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.
Not
Eftersom den string
typen inte stöder null-värden rekommenderar vi att du använder isempty()
- och isnotempty()
-funktionerna.
Likhet och ojämlikhet i null-värden
-
Likhet (
==
): Om likhetsoperatorn tillämpas på två null-värdenbool(null)
. Om likhetsoperatorn tillämpas på ett null-värde och ett värde som inte är null gerbool(false)
. -
Inequality (
!=
): Att tillämpa ojämlikhetsoperatorn på två null-värden gerbool(null)
. Om du tillämpar ojämlikhetsoperatorn på ett null-värde och ett värde som inte är null ger detbool(true)
.
Till 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)
utdata
val | IsBiggerThan3 | IsBiggerThan3OrNull | IsEqualToNull | IsNotequalToNull |
---|---|---|---|---|
5 | sann | sann | falsk | sann |
noll | noll | sann | noll | noll |
Null-värden och aggregeringsfunktioner
När du tillämpar följande operatorer på entiteter som innehåller null-värden ignoreras null-värdena och tar inte hänsyn till beräkningen:
- dcount()
- dcountif()
- make_bag()
- make_bag_if()
- make_list()
- make_list_if()
- make_set()
- make_set_if()
- stdev()
- stdevif()
- sum()
- sumif()
- varians()
- variansif()
Null-värden och operatorn where
Den där operatorn använda 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 bool(false)
. Poster som predikatet returnerar null-värdet för tas bort och visas inte i utdata.
Till exempel:
datatable(ival:int, sval:string)[5, "a", int(null), "b"]
| where ival != 5
utdata
ival | sval |
---|---|
noll | b |
Null-värden och binära operatorer
Binära operatorer är skalära operatorer som accepterar två skalära värden och skapar ett tredje värde. Till exempel är större än (>) och booleska AND (&&) binära operatorer.
För alla binära operatorer, förutom i Undantag till den här regeln, är regeln följande:
Om ett eller båda värdena som matas in till den binära operatorn är null-värden är utdata från den binära operatorn också null-värdet. Med andra ord är null-värdet "klibbigt".
Undantag till den här regeln
- För operatorerna likhet (
==
) och ojämlikhet (!=
) är ett av värdena null och det andra värdet inte är null, blir resultatet antingenbool(false)
ellerbool(true)
. - För operatorn logiska AND (&&) är resultatet också
bool(false)
om ett av värdena ärbool(false)
. - Om ett av värdena är
bool(true)
för operatorn logisk OR (||
) är resultatet ocksåbool(true)
.
Till exempel:
datatable(val:int)[5, int(null)]
| extend Add = val + 10
| extend Multiply = val * 10
utdata
val | Addera | Multiplicera |
---|---|---|
5 | 15 | 50 |
noll | noll | noll |
Null-värden och operatorn logiska NOT (!
)
Den logiska NOT-operatorn not() ger värdet bool(null)
om argumentet är null-värdet.
Null-värden och operatorn in
- i operatorn fungerar som en logisk ELLER av likhetsjämförelser.
- Operatorn
!in
beter sig som en logiskAND
av ojämlikhetsjä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-liknande 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.
Till 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)
utdata
a | b | isnull_a | isempty_a | strlen_a | isnull_b |
---|---|---|---|---|---|
falsk | sann | 0 | sann | ||
falsk | falsk | 1 | sann | ||
a | 1 | falsk | falsk | 1 | falsk |
Not
- Om du kör ovanstående fråga i Kusto.Explorer visas alla
true
värden som1
och allafalse
värden visas som0
. - Kusto erbjuder inte ett sätt att hindra en tabells kolumn från att ha null-värden. Med andra ord finns det ingen motsvarighet till SQL:s
NOT NULL
villkor.
Not
Kusto erbjuder inte ett sätt att hindra en tabells kolumn från att ha null-värden. Med andra ord finns det ingen motsvarighet till SQL:s NOT NULL
villkor.