NULL-Werte
Gilt für: ✅Microsoft Fabric✅Azure Data Explorer✅Azure Monitor✅Microsoft 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 Gleichheitsoperatorsbool(null)
auf zwei Nullwerte führt zu einer Zeichenfolge. Das Anwenden des Gleichheitsoperatorsbool(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 Ergibtbool(null)
. Das Anwenden des Ungleichheitsoperators auf einen Nullwert und einen Wert ungleich Null führt zu einer Ausbeutebool(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:
- 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()
- varianzif()
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 entwederbool(false)
oderbool(true)
, bzw. - Für den logischen AND (&&&)-Operator, wenn einer der Werte lautet
bool(false)
, ist das Ergebnis ebenfallsbool(false)
. - Für den logischen OR (
||
) -Operator, wenn einer der Werte istbool(true)
, ist das Ergebnis auchbool(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 logischerAND
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 angezeigt1
, und allefalse
Werte werden als0
angezeigt. - 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.