GitHubContribute in GitHub: Online bearbeiten

Nullwerte

Alle skalaren Datentypen in Kusto haben einen Sonderwert, der einen fehlenden Wert darstellt. Dieser Wert wird als Nullwertoder nullbezeichnet.

  • Der Datentyp string unterstützt keine Nullwerte.

Nullliterale

Der Nullwert eines skalaren Typs T wird in der Abfragesprache durch das Nullliteral T(null)dargestellt. Die folgende Abfrage gibt eine einzelne Zeile mit Nullwerten zurück:

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

Vergleichselemente für Nullwerte

Die Skalarfunktion isnull() kann verwendet werden, um festzustellen, ob ein Skalarwert der Nullwert ist. Die entsprechende Funktion isnotnull() kann verwendet werden, um festzustellen, ob ein skalarer Wert nicht der Nullwert ist.

Da der Typ string keine Nullwerte unterstützt, wird empfohlen, die Funktionen isempty() und isnotempty() zu verwenden.

Gleichheit und Ungleichheit von Nullwerten

  • Gleichheit (==): Die Anwendung des Gleichheitsoperators auf zwei Nullwerte ergibt bool(null). Die Anwendung des Gleichheitsoperators auf einen Nullwert und einen Wert ungleich null ergibt bool(false).
  • Ungleichheit (!=): Anwenden des Ungleichheitsoperators auf zwei Nullwerte ergibt bool(null). Die Anwendung des Ungleichheitsoperators auf einen Nullwert und einen Wert ungleich null ergibt bool(true).

Beispiel:

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)

Die Ergebnisse

wert IsBiggerThan3 IsBiggerThan3OrNull IsEqualToNull IsNotEqualToNull
5 Ja Ja Nein Ja
null null Ja null null

Nullwerte und der WHERE-Abfrageoperator

Der WHERE-Operator verwendet boolesche Ausdrücke, um zu bestimmen, ob jeder Eingabedatensatz an die Ausgabe ausgegeben werden soll. Dieser Operator behandelt Nullwerte so, als wären sie bool(false). Datensätze, für die das Vergleichselement den Nullwert zurückgibt, werden gelöscht und erscheinen nicht in der Ausgabe.

Beispiel:

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

Die Ergebnisse

Ival Sval
null b

Binäre Operatoren und Nullwerte

Binäre Operatoren sind skalare Operatoren, die zwei skalare Werte akzeptieren und einen dritten Wert erzeugen. Beispiel: Größer-als-Zeichen (>) und Boolesches UND (& &) sind Binäroperatoren.

Für alle Binäroperatoren mit Ausnahme von untengilt die folgende Regel:
Wenn einer oder beide der Werte, die in den Binäroperator eingegeben werden, Nullwerte sind, ist die Ausgabe des Binäroperators auch der Nullwert. Mit anderen Worten: Der Nullwert ist "sticky".

Ausnahmen von dieser Regel

  • Für die Operatoren Gleichheit (==) und Ungleichheit (!=) ist das Ergebnis entweder bool(false) oder bool(true), wenn einer der Werte null ist und der andere Wert nicht null ist.
  • Für das logische UND (& &) Wenn einer der Werte bool(false)ist, ist das Ergebnis ebenfalls bool(false).
  • Wenn für den logischen Operator OR (||) einer der Werte bool(true)ist, ist das Ergebnis auch bool(true).

Beispiel

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

Die Ergebnisse

wert Hinzufügen Multiplizieren
5 15. 50
null null null

Nullwerte und der Operator 'in'

  • Der Operator in verhält sich wie ein logisches OR von Gleichheitsvergleichen.
  • Der Operator! in verhält sich wie ein logisches UND von Ungleichheitsvergleichen.