NULL-Werte
Alle Skalardatentypen in Kusto verfügen über einen speziellen Wert, der einen fehlenden Wert darstellt. Dieser Wert wird als NULL-Wert oder NULL bezeichnet.
Hinweis
Der string
Datentyp unterstützt keine NULL-Werte.
NULL-Literale
Der NULL-Wert eines Skalartyps T wird in der Abfragesprache durch das NULL-Literal T(null)
dargestellt.
Die folgende Abfrage gibt eine einzelne Zeile mit NULL-Werten 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 NULL-Werte
Die Skalarfunktion isnull()
kann verwendet werden, um zu bestimmen, ob ein Skalarwert der NULL-Wert ist. Die entsprechende Funktion isnotnull()
kann verwendet werden, um zu bestimmen, ob ein Skalarwert nicht der NULL-Wert ist.
Hinweis
Da der string
Typ keine NULL-Werte unterstützt, wird empfohlen, die isempty()
Funktionen und zu isnotempty()
verwenden.
Gleichheit und Ungleichheit von NULL-Werten
- Gleichheit (
==
): Wenn der Gleichheitsoperator auf zwei NULL-Werte angewendet wird, wird zurückgegebenbool(null)
. Das Anwenden des Gleichheitsoperators auf einen NULL-Wert und einen Ungleich-NULL-Wert ergibtbool(false)
. - Ungleichheit (
!=
): Das Anwenden des Ungleichheitsoperatorsbool(null)
auf zwei NULL-Werte ergibt . Das Anwenden des Ungleichheitsoperators auf einen NULL-Wert und einen Ungleich-NULL-Wert 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)
Ausgabe
Val | IsBiggerThan3 | IsBiggerThan3OrNull | IsEqualToNull | IsNotEqualToNull |
---|---|---|---|---|
5 | true | true | false | true |
NULL | NULL | true | NULL | NULL |
NULL-Werte und Aggregationsfunktionen
Beim Anwenden der folgenden Operatoren auf Entitäten, die NULL-Werte enthalten, werden die NULL-Werte ignoriert und nicht in die Berechnung einbezogen:
- count()
- count_distinct()
- countif()
- dcount()
- dcountif()
- make_bag()
- make_bag_if()
- make_list()
- make_list_if()
- make_set()
- make_set_if()
- stdev()
- stdevif()
- sum()
- sumif()
- variance()
- varianceif()
NULL-Werte und der where
Operator
Der where-Operator verwendet boolesche Ausdrücke, um zu bestimmen, ob die einzelnen Eingabedatensätze an die Ausgabe ausgegeben werden sollen. Dieser Operator behandelt NULL-Werte so, als ob sie sind bool(false)
. Datensätze, für die das Prädikat den NULL-Wert zurückgibt, werden gelöscht und werden nicht in der Ausgabe angezeigt.
Beispiel:
datatable(ival:int, sval:string)[5, "a", int(null), "b"]
| where ival != 5
Ausgabe
ival | sval |
---|---|
NULL | b |
NULL-Werte und binäre Operatoren
Binäre Operatoren sind Skalaroperatoren, die zwei Skalarwerte akzeptieren und einen dritten Wert erzeugen. Beispielsweise sind größer als (>) und boolesche AND (&&) binäre Operatoren.
Für alle binären Operatoren gilt die Regel wie folgt, außer wie unter Ausnahmen für diese Regel angegeben:
Wenn einer oder beide werte, die für den binären Operator eingegeben werden, NULL-Werte sind, ist die Ausgabe des binären Operators ebenfalls der NULL-Wert. Mit anderen Worten, der NULL-Wert ist "sticky".
Ausnahmen von dieser Regel
- Wenn für die Gleichheitsoperatoren (
==
) und Ungleichheitsoperatoren (!=
) einer der Werte NULL und der andere Wert nicht NULL ist, lautet das Ergebnis entwederbool(false)
oderbool(true)
bzw. . - Wenn einer der Werte für den logischen AND-Operator (&&) ist
bool(false)
, ist das Ergebnis ebenfallsbool(false)
. - Wenn einer der Werte für den logischen OR-Operator (
||
) ist, istbool(true)
das Ergebnis ebenfallsbool(true)
.
Beispiel:
datatable(val:int)[5, int(null)]
| extend Add = val + 10
| extend Multiply = val * 10
Ausgabe
Val | Hinzufügen | Multiplizieren |
---|---|---|
5 | 15 | 50 |
NULL | NULL | NULL |
NULL-Werte und der logische NOT-Operator (!
)
Der logische NOT-Operator not() gibt den Wert bool(null)
ab, wenn das Argument der NULL-Wert ist.
NULL-Werte und der in
Operator
- Der in-Operator verhält sich wie ein logisches OR von Gleichheitsvergleichen.
- Der
!in
Operator verhält sich wie ein logischerAND
Ungleichheitsvergleich.
NULL-Werte und Datenerfassung
Bei den meisten Datentypen erzeugt ein fehlender Wert in der Datenquelle einen NULL-Wert in der entsprechenden Tabellenzelle. Spalten vom Typ string
und CSV -Datenformaten (oder CSV-ähnlich) 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)
Ausgabe
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 ausführen. Explorer werden alle
true
Werte als1
angezeigt, und allefalse
Werte werden als0
angezeigt. - Kusto bietet keine Möglichkeit, die Spalte einer Tabelle auf NULL-Werte zu beschränken. Anders ausgedrückt: Es gibt keine Entsprechung mit der SQL-Einschränkung
NOT NULL
.
Hinweis
Kusto bietet keine Möglichkeit, die Spalte einer Tabelle auf NULL-Werte zu beschränken. Anders ausgedrückt: Es gibt keine Entsprechung mit der SQL-Einschränkung NOT NULL
.
Feedback
https://aka.ms/ContentUserFeedback.
Bald verfügbar: Im Laufe des Jahres 2024 werden wir GitHub-Issues stufenweise als Feedbackmechanismus für Inhalte abbauen und durch ein neues Feedbacksystem ersetzen. Weitere Informationen finden Sie unterFeedback senden und anzeigen für