Hodnoty Null
Platí pro: ✅Microsoft Fabric✅Azure Data Explorer✅Azure Monitor✅Microsoft 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ýsledkembool(null)
. Použití operátoru rovnosti na hodnotu null a nenulová hodnota je výsledkembool(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:
- 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()
- variance()
- varianceif()
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)
nebobool(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 hodnotbool(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 jako1
a všechnyfalse
hodnoty se zobrazí jako0
. - 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
.