Dela via


Null-värden

Gäller för: ✅Microsoft FabricAzure Data ExplorerAzure MonitorMicrosoft 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ärden bool(null). Om likhetsoperatorn tillämpas på ett null-värde och ett värde som inte är null ger bool(false).
  • Inequality (!=): Att tillämpa ojämlikhetsoperatorn på två null-värden ger bool(null). Om du tillämpar ojämlikhetsoperatorn på ett null-värde och ett värde som inte är null ger det bool(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:

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 antingen bool(false) eller bool(true).
  • För operatorn logiska AND (&&) är resultatet också bool(false)om ett av värdena är bool(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 logisk AND 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 som 1och alla false värden visas som 0.
  • 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.