Sdílet prostřednictvím


Hodnoty Null

Platí pro: ✅Microsoft FabricAzure Data Explorer✅Azure MonitorMicrosoft Sentinel

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 reprezentována v dotazovacím jazyce 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 skalární hodnota je hodnota null. Odpovídající funkci isnotnull() lze použít k určení, jestli skalární hodnota není hodnotou null.

Poznámka:

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

Rovnost a nerovnost hodnot null

  • Rovnost (==): Použití operátoru rovnosti na dvě hodnoty null je výsledkem bool(null). Použití operátoru rovnosti na hodnotu null a nenulová hodnota je výsledkem 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 nenulová hodnota je výnos .bool(true)

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 nefaktorují do výpočtu:

Hodnoty null a where operátor

Operátor where používá logické výrazy k určení, zda má každý vstupní záznam generovat do výstupu. Tento operátor považuje hodnoty null za předpokladu, že jsou bool(false). Záznamy, pro které predikát vrátí hodnotu null, se zahodí a ve výstupu se nezobrazí.

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. Například operátory greater-than (>) a Boolean AND (&&) jsou binární operátory.

Pro všechny binární operátory s výjimkou výjimek tohoto pravidla je toto pravidlo následující:

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

Výjimky tohoto pravidla

  • Pro operátory rovnosti () a nerovnosti (==!=) je-li jedna z hodnot null a druhá hodnota není null, výsledek je buď bool(false) nebo bool(true), v uvedeném pořadí.
  • Pro logický operátor AND (&&) je-li jedna z hodnot bool(false), výsledek je také bool(false).
  • Pro logický operátor OR (||) je-li jedna z hodnot bool(true), 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í Krát
5 15 50
null null null

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

Logický operátor NOT ne() vrátí hodnotu bool(null) , pokud je argument hodnotou 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í nerovnosti.

Hodnoty null a příjem dat

U většiny datových typů chybějící hodnota ve zdroji dat vytvoří hodnotu null v odpovídající buňce tabulky. Sloupce datových formátů typu string a CSV (nebo podobné csv) jsou však výjimkou 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

d b isnull_a isempty_a strlen_a isnull_b
    false (nepravda) true 0 true
    false (nepravda) false (nepravda) 0 true
d 0 false (nepravda) false (nepravda) 0 false (nepravda)

Poznámka:

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

Poznámka:

Kusto nenabízí způsob, jak omezit sloupec tabulky, aby měl hodnoty null. Jinými slovy, neexistuje žádný ekvivalent omezení SQL NOT NULL .