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 dubool(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 dubool(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:
- 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()
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 antingenbool(false)
ellerbool(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 ärbool(false)
. - Om ett av värdena är för den logiska OR-operatorn (
||
) ärbool(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 logiskAND
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 som1
och allafalse
värden visas som0
. - 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.
Feedback
https://aka.ms/ContentUserFeedback.
Kommer snart: Under hela 2024 kommer vi att fasa ut GitHub-problem som feedbackmekanism för innehåll och ersätta det med ett nytt feedbacksystem. Mer information finns i:Skicka och visa feedback för