Udostępnij za pośrednictwem


Wartości null

Dotyczy: ✅Microsoft Fabric✅Azure Data ExplorerAzure MonitorMicrosoft 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 zwraca bool(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 zwraca bool(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:

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 albo bool(false) lub bool(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 to bool(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 logiczne AND 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 jako 1, a wszystkie false wartości będą wyświetlane jako 0.
  • 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.