Freigeben über


NULL-Werte

Gilt für: ✅Microsoft Fabric✅Azure Data ExplorerAzure MonitorMicrosoft Sentinel

Alle skalaren Datentypen in Kusto weisen einen speziellen Wert auf, der einen fehlenden Wert darstellt. Dieser Wert wird als Nullwert oder NULL bezeichnet.

Hinweis

Der string Datentyp unterstützt keine NULL-Werte.

NULL-Literale

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), timespan(null)

Prädikate für Nullwerte

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

Hinweis

Da der string Typ keine NULL-Werte unterstützt, empfehlen wir die Verwendung der isempty() Funktionen und der isnotempty() Funktionen.

Gleichheit und Ungleichheit von Nullwerten

  • Gleichheit (==): Das Anwenden des Gleichheitsoperators bool(null)auf zwei Nullwerte führt zu einer Zeichenfolge. Das Anwenden des Gleichheitsoperators bool(false)auf einen Nullwert und einen Wert ungleich Null führt zu einer Zeichenfolge.
  • Ungleichheit (!=): Das Anwenden des Ungleichheitsoperators auf zwei Nullwerte führt zu einer Ergibt bool(null). Das Anwenden des Ungleichheitsoperators auf einen Nullwert und einen Wert ungleich Null führt zu einer Ausbeute bool(true).

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

Output

val IsBiggerThan3 IsBiggerThan3OrNull IsEqualToNull IsNotEqualToNull
5 true true false true
NULL NULL true NULL NULL

Nullwerte und Aggregationsfunktionen

Wenn Sie die folgenden Operatoren auf Entitäten anwenden, die Nullwerte enthalten, werden die Nullwerte ignoriert und nicht in die Berechnung einbezogen:

Nullwerte und der where Operator

Der Operator verwendet boolesche Ausdrücke, um zu bestimmen, ob jeder Eingabedatensatz an die Ausgabe ausgegeben werden soll. Dieser Operator behandelt NULL-Werte, als ob sie sich befinden bool(false). Datensätze, für die das Prädikat den Nullwert zurückgibt, werden verworfen und werden nicht in der Ausgabe angezeigt.

Zum Beispiel:

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

Output

ival sval
NULL b

Nullwerte und binäre Operatoren

Binäre Operatoren sind skalare Operatoren, die zwei skalare Werte akzeptieren und einen dritten Wert erzeugen. Beispielsweise sind größer als (>) und boolesche UND (&&)-Operatoren binäre Operatoren.

Für alle binären Operatoren, mit Ausnahme der Ausnahmen von dieser Regel, lautet die Regel wie folgt:

Wenn eine oder beide Werte, die an den binären Operator eingegeben werden, NULL-Werte sind, ist die Ausgabe des Binären Operators auch der Nullwert. Mit anderen Worten, der Nullwert ist "sticky".

Ausnahmen von dieser Regel

  • Bei den Gleichheits- (==) und Ungleichheitsoperatoren (!=) ist einer der Werte null und der andere Wert nicht null, dann ist das Ergebnis entweder bool(false) oder bool(true), bzw.
  • Für den logischen AND (&&&)-Operator, wenn einer der Werte lautet bool(false), ist das Ergebnis ebenfalls bool(false).
  • Für den logischen OR (||) -Operator, wenn einer der Werte ist bool(true), ist das Ergebnis auch bool(true).

Zum Beispiel:

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

Output

val Add (Hinzufügen) Multiplizieren
5 15 50
NULL NULL NULL

Nullwerte und der logische NOT(!)-Operator

Der logische NOT-Operator gibt den Wert bool(null) zurück, wenn das Argument der NULL-Wert ist.

Nullwerte und der in Operator

  • Der In-Operator verhält sich wie ein logisches ODER von Gleichheitsvergleichen.
  • Der !in Operator verhält sich wie ein logischer AND Ungleichheitsvergleich.

Nullwerte und Datenaufnahme

Für die meisten Datentypen erzeugt ein fehlender Wert in der Datenquelle einen NULL-Wert in der entsprechenden Tabellenzelle. Spalten vom Typ string und CSV-Format (oder CSV-ähnliche) Datenformate sind jedoch eine Ausnahme von dieser Regel, und ein fehlender Wert erzeugt eine leere Zeichenfolge.

Zum Beispiel:

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

Output

a b isnull_a isempty_a strlen_a isnull_b
    false true 0 true
    false false 1 true
a 1 false false 1 false

Hinweis

  • Wenn Sie die obige Abfrage in Kusto.Explorer ausführen, werden alle true Werte als angezeigt 1, und alle false Werte werden als 0angezeigt.
  • Kusto bietet keine Möglichkeit, die Spalte einer Tabelle auf null-Werte zu beschränken. Mit anderen Worten, es gibt keine Entsprechung mit der Einschränkung von NOT NULL SQL.

Hinweis

Kusto bietet keine Möglichkeit, die Spalte einer Tabelle auf null-Werte zu beschränken. Mit anderen Worten, es gibt keine Entsprechung mit der Einschränkung von NOT NULL SQL.