Wartości null
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 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 isnull()
skalarna 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żywanie isempty()
funkcji i isnotempty()
.
Równość i nierówności 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 wartości innej niż null daje wartośćbool(false)
. - 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 wartość innej niż null daje wartośćbool(true)
.
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)
Dane wyjściowe
Val | IsBiggerThan3 | IsBiggerThan3OrNull | IsEqualToNull | IsNotEqualToNull |
---|---|---|---|---|
5 | true | true | fałsz | true |
null | null | true | null | null |
Wartości null i funkcje agregacji
Podczas 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 obliczeniu:
- 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()
- varianceif()
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
Dane wyjściowe
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 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
- W przypadku 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, wynikiem jestbool(false)
wartość lubbool(true)
, odpowiednio. - Dla operatora logicznego AND (&&), jeśli jedną z wartości jest
bool(false)
, wynikiem jest równieżbool(false)
. - Dla operatora logicznego OR (
||
), jeśli jedną z wartości jestbool(true)
, wynikiem jest równieżbool(true)
.
Na przykład:
datatable(val:int)[5, int(null)]
| extend Add = val + 10
| extend Multiply = val * 10
Dane wyjściowe
Val | Dodaj | Mnożenie |
---|---|---|
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ównanie 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 typu string
i formaty 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)
Dane wyjściowe
a | b | isnull_a | isempty_a | strlen_a | isnull_b |
---|---|---|---|---|---|
fałsz | true | 0 | true | ||
fałsz | fałsz | 1 | true | ||
a | 1 | fałsz | fałsz | 1 | fałsz |
Uwaga
- Jeśli uruchomisz powyższe zapytanie w programie 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 możliwości ograniczenia kolumny tabeli z powodu wartości null. Innymi słowy, nie ma odpowiednika
NOT NULL
ograniczenia sql.
Uwaga
Usługa Kusto nie oferuje możliwości ograniczenia kolumny tabeli z powodu wartości null. Innymi słowy, nie ma odpowiednika NOT NULL
ograniczenia sql.
Opinia
https://aka.ms/ContentUserFeedback.
Dostępne już wkrótce: W 2024 r. będziemy stopniowo wycofywać zgłoszenia z serwisu GitHub jako mechanizm przesyłania opinii na temat zawartości i zastępować go nowym systemem opinii. Aby uzyskać więcej informacji, sprawdź:Prześlij i wyświetl opinię dla