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ílbool(null)
. Použití operátoru rovnosti na hodnotu null a hodnotu, která není null, výsledkem jebool(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:
- 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í, 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)
nebobool(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í jako1
a všechnyfalse
hodnoty se zobrazí jako0
. - 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
.
Váš názor
https://aka.ms/ContentUserFeedback.
Připravujeme: V průběhu roku 2024 budeme postupně vyřazovat problémy z GitHub coby mechanismus zpětné vazby pro obsah a nahrazovat ho novým systémem zpětné vazby. Další informace naleznete v tématu:Odeslat a zobrazit názory pro