Null-értékek
A Kusto összes skaláris adattípusa rendelkezik egy speciális értékkel, amely egy hiányzó értéket jelöl. Ezt az értéket null értéknek vagy nullnak nevezzük.
Megjegyzés
Az string
adattípus nem támogatja a null értékeket.
Null literálok
A T skaláris típus null értékét a lekérdezés nyelvében a null literál T(null)
jelöli.
A következő lekérdezés egyetlen, null értékekkel teli sort ad vissza:
print bool(null), datetime(null), dynamic(null), guid(null), int(null), long(null), real(null), double(null), timespan(null)
Null értékek predikátumai
A skaláris függvénnyel isnull()
megállapítható, hogy a skaláris érték null értékű-e. A megfelelő függvénnyel isnotnull()
megállapítható, hogy a skaláris érték nem null értékű-e.
Megjegyzés
Mivel a típus nem támogatja a string
null értékeket, a és a isempty()
isnotempty()
függvény használatát javasoljuk.
Null értékek egyenlősége és egyenlőtlensége
- Egyenlőség (
==
): Az egyenlőségi operátor alkalmazása két null értékrebool(null)
. Az egyenlőségi operátor alkalmazása null értékre és nem null értékű hozamrabool(false)
. - Egyenlőtlenség (
!=
): Az egyenlőtlenségi operátor alkalmazása két null értékrebool(null)
. Az egyenlőtlenségi operátor alkalmazása null értékre és nem null értékű hozamrabool(true)
.
Például:
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)
Kimenet
val | IsBiggerThan3 | IsBiggerThan3OrNull | IsEqualToNull | IsNotEqualToNull |
---|---|---|---|---|
5 | true | true | hamis | true |
null | null | true | null | null |
Null értékek és összesítő függvények
Ha a következő operátorokat null értékeket tartalmazó entitásokra alkalmazza, a null értékek figyelmen kívül lesznek hagyva, és nem veszik figyelembe a számítást:
- 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()
Null értékek és az where
operátor
A where operátor logikai kifejezésekkel határozza meg, hogy az egyes bemeneti rekordok kibocsáthatóak-e a kimenetbe. Ez az operátor úgy kezeli a null értékeket, mintha azok bool(false)
lennének. Azok a rekordok, amelyeknél a predikátum null értéket ad vissza, el lesznek dobva, és nem jelennek meg a kimenetben.
Például:
datatable(ival:int, sval:string)[5, "a", int(null), "b"]
| where ival != 5
Kimenet
ival | sval |
---|---|
null | b |
Null értékek és bináris operátorok
A bináris operátorok skaláris operátorok, amelyek két skaláris értéket fogadnak el, és egy harmadik értéket hoznak létre. A nagyobb mint (>) és a logikai ÉS (&&) például bináris operátorok.
Az összes bináris operátor esetében a szabály kivételei szakasz kivételével a szabály a következő:
Ha a bináris operátor bemenetének egyik vagy mindkét értéke null érték, akkor a bináris operátor kimenete is a null érték. Más szóval a null érték "ragadós".
A szabály alóli kivételek
- Az egyenlőségi (
==
) és az egyenlőtlenségi (!=
) operátorok esetében, ha az egyik érték null, a másik érték pedig nem null, akkor az eredmény vagybool(false)
vagybool(true)
. - A logikai ÉS (&&) operátor esetében, ha az egyik érték
bool(false)
, akkor az eredmény isbool(false)
. - A logikai VAGY (
||
) operátor esetében, ha az egyik értékbool(true)
, az eredmény isbool(true)
.
Például:
datatable(val:int)[5, int(null)]
| extend Add = val + 10
| extend Multiply = val * 10
Kimenet
val | Hozzáadás | Szorzás |
---|---|---|
5 | 15 | 50 |
null | null | null |
Null értékek és a logikai NOT (!
) operátor
A not() logikai NOT operátor akkor adja meg az értéket bool(null)
, ha az argumentum a null érték.
Null értékek és az in
operátor
- Az in operátor logikai VAGY egyenlőségi összehasonlításként viselkedik.
- Az
!in
operátor az egyenlőtlenség-összehasonlítások logikaiAND
eleméhez hasonlóan viselkedik.
Null értékek és adatbetöltés
A legtöbb adattípus esetében az adatforrás hiányzó értéke null értéket eredményez a megfelelő táblázatcellában. A szabály alól azonban kivételt képeznek a típus string
- és CSV- (vagy CSV-szerű) adatformátumok, és egy hiányzó érték üres sztringet eredményez.
Például:
.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)
Kimenet
a | b | isnull_a | isempty_a | strlen_a | isnull_b |
---|---|---|---|---|---|
hamis | true | 0 | true | ||
hamis | hamis | 1 | true | ||
a | 1 | hamis | hamis | 1 | hamis |
Megjegyzés
- Ha a fenti lekérdezést a Kusto.Explorerben futtatja, az összes
true
érték a néven jelenik meg1
, és az összesfalse
érték a néven jelenik meg0
. - A Kusto nem biztosít módot arra, hogy egy tábla oszlopát ne legyen null értékű. Más szóval az SQL kényszerének nincs egyenértékűsége
NOT NULL
.
Megjegyzés
A Kusto nem biztosít módot arra, hogy egy tábla oszlopát ne legyen null értékű. Más szóval az SQL kényszerének nincs egyenértékűsége NOT NULL
.
Visszajelzés
https://aka.ms/ContentUserFeedback.
Hamarosan elérhető: 2024-ben fokozatosan kivezetjük a GitHub-problémákat a tartalom visszajelzési mechanizmusaként, és lecseréljük egy új visszajelzési rendszerre. További információ:Visszajelzés küldése és megtekintése a következőhöz: