Hodnoty Null

Všechny skalární datové typy v Kusto mají speciální hodnotu, která představuje chybějící hodnotu. Tato hodnota se nazývá hodnota null nebo null.

Poznámka

Datový string typ nepodporuje hodnoty null.

Literály null

Hodnota null skalárního typu T je v dotazovacím jazyce reprezentována literálem T(null)null .

Následující dotaz vrátí jeden řádek plný hodnot null:

print bool(null), datetime(null), dynamic(null), guid(null), int(null), long(null), real(null), double(null), timespan(null)

Predikáty hodnot null

Skalární funkci isnull() lze použít k určení, jestli je skalární hodnota null. Odpovídající funkci isnotnull() lze použít k určení, jestli skalární hodnota není hodnotou null.

Poznámka

Vzhledem k tomu, že string typ nepodporuje hodnoty null, doporučujeme použít isempty() funkce a isnotempty() .

Rovnost a nerovnost hodnot null

  • Rovnost (==): Použití operátoru rovnosti na dvě hodnoty null má za cíl bool(null). Použití operátoru rovnosti na hodnotu null a hodnotu, která není null, výsledkem je bool(false).
  • Nerovnost (!=): Použití operátoru nerovnosti na dvě hodnoty null přináší bool(null). Použití operátoru nerovnosti na hodnotu null a hodnotu, která není null, získá bool(true)hodnotu .

Příklad:

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)

Výstup

Val IsBiggerThan3 IsBiggerThan3OrNull IsEqualToNull IsNotEqualToNull
5 true true false (nepravda) true
null null true null null

Hodnoty null a agregační funkce

Při použití následujících operátorů u entit, které obsahují hodnoty null, se hodnoty null ignorují a nezapočítávají se do výpočtu:

Hodnoty null a where operátor

Operátor where používá logické výrazy k určení, jestli se mají do výstupu vygenerovat jednotlivé vstupní záznamy. Tento operátor zachází s hodnotami null, jako by byly bool(false). Záznamy, pro které predikát vrací hodnotu null, se zahodí a nezobrazí se ve výstupu.

Příklad:

datatable(ival:int, sval:string)[5, "a", int(null), "b"]
| where ival != 5

Výstup

Ival sval
null b

Hodnoty null a binární operátory

Binární operátory jsou skalární operátory, které přijímají dvě skalární hodnoty a vytvářejí třetí hodnotu. Binární operátory jsou například větší než (>) a logická hodnota AND (&&).

Pro všechny binární operátory, s výjimkou případů uvedených v části Výjimky z tohoto pravidla, je pravidlo následující:

Pokud jedna nebo obě hodnoty vstupem do binárního operátoru jsou hodnoty null, pak výstupem binárního operátoru je také hodnota null. Jinými slovy, hodnota null je "sticky".

Výjimky z tohoto pravidla

  • Pro operátory rovnosti (==) a nerovnosti (!=) platí, že pokud je jedna z hodnot null a druhá hodnota null není, výsledek je buď bool(false) nebo bool(true), v uvedeném pořadí.
  • Pokud je bool(false)u logického operátoru AND (&&) jedna z hodnot , výsledek je také bool(false).
  • Pokud je bool(true)u logického operátoru OR (||) jedna z hodnot , výsledek je také bool(true).

Příklad:

datatable(val:int)[5, int(null)]
| extend Add = val + 10
| extend Multiply = val * 10

Výstup

Val Přidání Násobení
5 15 50
null null null

Hodnoty null a logický operátor NOT (!)

Logický operátor NOT not() vynese hodnotu bool(null) , pokud je argumentem hodnota null.

Hodnoty null a in operátor

  • Operátor in se chová jako logický operátor OR porovnání rovnosti.
  • Operátor !in se chová jako logické AND porovnání nerovností.

Hodnoty null a příjem dat

U většiny datových typů vytvoří chybějící hodnota ve zdroji dat hodnotu null v odpovídající buňce tabulky. Sloupce typu string a datových formátů CSV (nebo podobných CSV) jsou však výjimkou z tohoto pravidla a chybějící hodnota vytvoří prázdný řetězec.

Příklad:

.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)

Výstup

pro b isnull_a isempty_a strlen_a isnull_b
    false (nepravda) true 0 true
    false (nepravda) false (nepravda) 1 true
pro 1 false (nepravda) false (nepravda) 1 false (nepravda)

Poznámka

  • Pokud výše uvedený dotaz spustíte v Kusto.Exploreru, všechny true hodnoty se zobrazí jako 1a všechny false hodnoty se zobrazí jako 0.
  • Kusto nenabízí způsob, jak omezit hodnoty null ve sloupci tabulky. Jinými slovy, neexistuje žádný ekvivalent omezení SQL NOT NULL .

Poznámka

Kusto nenabízí způsob, jak omezit hodnoty null ve sloupci tabulky. Jinými slovy, neexistuje žádný ekvivalent omezení SQL NOT NULL .