Nullwerte
Alle skalaren Datentypen in Kusto haben einen Sonderwert, der einen fehlenden Wert darstellt. Dieser Wert wird als Nullwertoder nullbezeichnet.
- Der Datentyp
stringunterstü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 ergibtbool(null). Die Anwendung des Gleichheitsoperators auf einen Nullwert und einen Wert ungleich null ergibtbool(false). - Ungleichheit (
!=): Anwenden des Ungleichheitsoperators auf zwei Nullwerte ergibtbool(null). Die Anwendung des Ungleichheitsoperators auf einen Nullwert und einen Wert ungleich null ergibtbool(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 entwederbool(false)oderbool(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 ebenfallsbool(false). - Wenn für den logischen Operator OR (
||) einer der Wertebool(true)ist, ist das Ergebnis auchbool(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.