Null-waarden

Alle scalaire gegevenstypen in Kusto hebben een speciale waarde die een ontbrekende waarde vertegenwoordigt. Deze waarde wordt de null-waarde of null genoemd.

Notitie

Het string gegevenstype biedt geen ondersteuning voor null-waarden.

Letterlijke null-waarde

De null-waarde van het scalaire type T wordt in de querytaal weergegeven met de letterlijke null-waarde T(null).

De volgende query retourneert één rij vol null-waarden:

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

Predicaten op null-waarden

De scalaire functie isnull() kan worden gebruikt om te bepalen of een scalaire waarde de null-waarde is. De bijbehorende functie isnotnull() kan worden gebruikt om te bepalen of een scalaire waarde niet de null-waarde is.

Notitie

Omdat het string type geen ondersteuning biedt voor null-waarden, raden we u aan de isempty() functies en isnotempty() te gebruiken.

Gelijkheid en ongelijkheid van null-waarden

  • Gelijkheid (==): het toepassen van de gelijkheidsoperator op twee null-waarden levert op bool(null). Het toepassen van de gelijkheidsoperator op een null-waarde en een niet-null-waarde levert op bool(false).
  • Ongelijkheid (!=): Het toepassen van de operator ongelijkheid op twee null-waarden levert op bool(null). Het toepassen van de operator ongelijkheid op een null-waarde en een niet-null-waarde levert op bool(true).

Bijvoorbeeld:

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)

Uitvoer

Val IsBiggerThan3 IsBiggerThan3OrNull IsequalTonull IsNotequalTonull
5 true waar onjuist true
null null true null null

Null-waarden en aggregatiefuncties

Wanneer u de volgende operators toepast op entiteiten die null-waarden bevatten, worden de null-waarden genegeerd en worden deze niet meegenomen in de berekening:

Null-waarden en de where operator

De operator where gebruikt Booleaanse expressies om te bepalen of elke invoerrecord naar de uitvoer moet worden verzonden. Met deze operator worden null-waarden behandeld alsof ze zijn bool(false). Records waarvan het predicaat de null-waarde retourneert, worden verwijderd en worden niet weergegeven in de uitvoer.

Bijvoorbeeld:

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

Uitvoer

ival sval
null b

Null-waarden en binaire operatoren

Binaire operators zijn scalaire operatoren die twee scalaire waarden accepteren en een derde waarde produceren. Groter dan (>) en Booleaanse AND (&&) zijn bijvoorbeeld binaire operatoren.

Voor alle binaire operators, behalve zoals vermeld in Uitzonderingen op deze regel, is de regel als volgt:

Als een of beide waarden die worden ingevoerd voor de binaire operator null-waarden zijn, is de uitvoer van de binaire operator ook de null-waarde. Met andere woorden, de null-waarde is 'plakkerig'.

Uitzonderingen op deze regel

  • Als voor de operators gelijkheid (==) en ongelijkheid (!=) een van de waarden null is en de andere waarde niet null, is bool(false) het resultaat respectievelijk of bool(true).
  • Als een van de waarden voor de logische AND-operator (&&) is bool(false), is het resultaat ook bool(false).
  • Als een van de waarden voor de logische OPERATOR OF (||) is bool(true), is het resultaat ook bool(true).

Bijvoorbeeld:

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

Uitvoer

Val Toevoegen Vermenigvuldigen
5 15 50
null null null

Null-waarden en de logische OPERATOR NOT (!)

De logische NOT-operator not() levert de waarde bool(null) op als het argument de null-waarde is.

Null-waarden en de in operator

  • De operator in gedraagt zich als een logische OF van gelijkheidsvergelijkingen.
  • De !in operator gedraagt zich als een logische van AND ongelijkheidsvergelijkingen.

Null-waarden en gegevensopname

Voor de meeste gegevenstypen produceert een ontbrekende waarde in de gegevensbron een null-waarde in de bijbehorende tabelcel. Kolommen van het type string en CSV-achtige (of CSV-achtige) gegevensindelingen vormen echter een uitzondering op deze regel en een ontbrekende waarde produceert een lege tekenreeks.

Bijvoorbeeld:

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

Uitvoer

een b isnull_a isempty_a strlen_a isnull_b
    onjuist true 0 waar
    onjuist false 1 true
een 1 onjuist false 1 onjuist

Notitie

  • Als u de bovenstaande query uitvoert in Kusto.Explorer, worden alle true waarden weergegeven als 1en worden alle false waarden weergegeven als 0.
  • Kusto biedt geen manier om te voorkomen dat de kolom van een tabel null-waarden bevat. Met andere woorden, er is geen equivalent aan de beperking van NOT NULL SQL.

Notitie

Kusto biedt geen manier om te voorkomen dat de kolom van een tabel null-waarden bevat. Met andere woorden, er is geen equivalent aan de beperking van NOT NULL SQL.