Wartości null
Dotyczy: ✅Microsoft Fabric✅Azure Data Explorer✅Azure Monitor✅Microsoft Sentinel
Wszystkie typy danych skalarnych w usłudze Kusto mają specjalną wartość, która reprezentuje brakującą wartość. Ta wartość jest nazywana wartością null lub wartością null.
Uwaga
Typ string
danych nie obsługuje wartości null.
Literały o wartości null
Wartość null typu skalarnego T jest reprezentowana w języku zapytań przez literał T(null)
null .
Następujące zapytanie zwraca pojedynczy wiersz pełen wartości null:
print bool(null), datetime(null), dynamic(null), guid(null), int(null), long(null), real(null), double(null), timespan(null)
Predykaty dla wartości null
Funkcja skalarna isnull()
może służyć do określenia, czy wartość skalarna jest wartością null. Odpowiednią funkcję isnotnull()
można użyć do określenia, czy wartość skalarna nie jest wartością null.
Uwaga
string
Ponieważ typ nie obsługuje wartości null, zalecamy użycie isempty()
funkcji i isnotempty()
.
Równość i nierówność wartości null
- Równość (
==
): zastosowanie operatora równości do dwóch wartości null daje wartośćbool(null)
. Zastosowanie operatora równości do wartości null i zwracabool(false)
wartość inną niż null. - Nierówności (
!=
): zastosowanie operatora nierówności do dwóch wartości null daje wartośćbool(null)
. Zastosowanie operatora nierówności do wartości null i zwracabool(true)
wartość inną niż null.
Na przykład:
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)
Wyjście
Val | IsBiggerThan3 | IsBiggerThan3OrNull | IsEqualToNull | IsNotEqualToNull |
---|---|---|---|---|
5 | prawda | prawda | fałsz | prawda |
null | null | prawda | null | null |
Wartości null i funkcje agregacji
W przypadku stosowania następujących operatorów do jednostek, które zawierają wartości null, wartości null są ignorowane i nie są uwzględniane w obliczeniach:
- 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()
- wariancja()
- wariancja()
Wartości null i where
operator
Operator where używa wyrażeń logicznych, aby określić, czy emitować każdy rekord wejściowy do danych wyjściowych. Ten operator traktuje wartości null tak, jakby były bool(false)
. Rekordy, dla których predykat zwraca wartość null, są porzucane i nie są wyświetlane w danych wyjściowych.
Na przykład:
datatable(ival:int, sval:string)[5, "a", int(null), "b"]
| where ival != 5
Wyjście
ival | sval |
---|---|
null | b |
Wartości null i operatory binarne
Operatory binarne to operatory skalarne, które akceptują dwie wartości skalarne i generują trzecią wartość. Na przykład operatory większe niż (>) i logiczne AND (&&) są operatorami binarnymi.
W przypadku wszystkich operatorów binarnych, z wyjątkiem wyjątków dla tej reguły, reguła jest następująca:
Jeśli jedna lub obie wartości wejściowe do operatora binarnego są wartościami null, dane wyjściowe operatora binarnego są również wartością null. Innymi słowy, wartość null to "sticky".
Wyjątki od tej reguły
- Dla operatorów równości () i nierówności (
!=
==
), jeśli jedna z wartości ma wartość null, a druga wartość nie ma wartości null, wynik jest albobool(false)
lubbool(true)
, odpowiednio. - W przypadku operatora logicznego AND (&&) jeśli jedna z wartości to
bool(false)
, wynikiem jest równieżbool(false)
. - W przypadku operatora logicznego OR (
||
), jeśli jedna z wartości tobool(true)
, wynikiem jest równieżbool(true)
.
Na przykład:
datatable(val:int)[5, int(null)]
| extend Add = val + 10
| extend Multiply = val * 10
Wyjście
Val | Dodaj | Razy |
---|---|---|
5 | 15 | 50 |
null | null | null |
Wartości null i operator logiczny NOT (!
)
Operator logiczny NOT () zwraca wartość bool(null)
, jeśli argument jest wartością null.
Wartości null i in
operator
- Operator in zachowuje się jak logiczne porównywanie równości OR.
- Operator
!in
zachowuje się jak logiczneAND
porównania nierówności.
Wartości null i pozyskiwanie danych
W przypadku większości typów danych brakująca wartość w źródle danych generuje wartość null w odpowiedniej komórce tabeli. Jednak kolumny typów string
i formatów danych CSV (lub csv-like) są wyjątkiem od tej reguły, a brakująca wartość generuje pusty ciąg.
Na przykład:
.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)
Wyjście
a | b | isnull_a | isempty_a | strlen_a | isnull_b |
---|---|---|---|---|---|
fałsz | prawda | 0 | prawda | ||
fałsz | fałsz | 1 | prawda | ||
a | 1 | fałsz | fałsz | 1 | fałsz |
Uwaga
- Jeśli uruchomisz powyższe zapytanie w narzędziu Kusto.Explorer, wszystkie
true
wartości będą wyświetlane jako1
, a wszystkiefalse
wartości będą wyświetlane jako0
. - Usługa Kusto nie oferuje sposobu ograniczenia kolumny tabeli z wartości null. Innymi słowy, nie ma odpowiednika
NOT NULL
ograniczenia sql.
Uwaga
Usługa Kusto nie oferuje sposobu ograniczenia kolumny tabeli z wartości null. Innymi słowy, nie ma odpowiednika NOT NULL
ograniczenia sql.