Null értékek
A következőkre vonatkozik: ✅Microsoft Fabric✅Azure Data Explorer✅Azure Monitor✅Microsoft Sentinel
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 nevezik null értéknek, vagy null.
Jegyzet
A string
adattípus nem támogatja a null értékeket.
Null literálok
A Skaláris típusú T nullértéket a lekérdezés nyelvében a null literális 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)
Predikátumok null értékeken
A skaláris függvény isnull()
használható annak megállapítására, hogy a skaláris érték null értékű-e. A megfelelő isnotnull()
függvénnyel megállapíthatja, hogy a skaláris érték nem null értékű-e.
Jegyzet
Mivel a string
típus nem támogatja a null értékeket, javasoljuk a isempty()
és a isnotempty()
függvény használatát.
Null értékek egyenlősége és egyenlőtlensége
-
Egyenlőségi (
==
): 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ékrebool(false)
. -
Egyenlőtlenségi (
!=
): 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ékrebool(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)
kimeneti
val | IsBiggerThan3 | IsBiggerThan3OrNull | IsEqualToNull | IsNotEqualToNull |
---|---|---|---|---|
5 | igaz | igaz | téves | igaz |
nulla | nulla | igaz | nulla | nulla |
Null értékek és összesítési 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 számítanak bele a számításba:
- dcount()
- dcountif()
- make_bag()
- make_bag_if()
- make_list()
- make_list_if()
- make_set()
- make_set_if()
- stdev()
- stdevif()
- sum()
- szumha()
- variancia()
- varianceif()
Null értékek és a where
operátor
Az a , ahol az operátor logikai kifejezésekkel határozza meg, hogy az egyes bemeneti rekordokat kibocsátja-e a kimenetbe. Ez az operátor úgy kezeli a null értékeket, mintha bool(false)
lennének. Azok a rekordok, amelyeknél a predikátum a null értéket adja vissza, elvetik, és nem jelennek meg a kimenetben.
Például:
datatable(ival:int, sval:string)[5, "a", int(null), "b"]
| where ival != 5
kimeneti
ival | sval |
---|---|
nulla | 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, kivéve szabály kivételei, a szabály a következő:
Ha a bináris operátor egyik vagy mindkét bemenete null értékű, akkor a bináris operátor kimenete is null értékű. Más szóval a null érték "ragadós".
Kivételek a szabály alól
- Az egyenlőség (
==
) és az egyenlőtlenség (!=
) 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)
lesz. - A logikai AND (&&) 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
kimeneti
val | Hozzáad | Szoroz |
---|---|---|
5 | 15 | 50 |
nulla | nulla | nulla |
Null értékek és a logikai NOT (!
) operátor
A logikai NOT operátor nem() akkor adja meg a bool(null)
értéket, ha az argumentum null értékű.
Null értékek és a in
operátor
- Az operátor logikai vagy egyenlőségi összehasonlításként viselkedik.
- A
!in
operátor az egyenlőtlenség-összehasonlítások logikaiAND
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 hoz létre a megfelelő táblacellában. A szabály alól azonban kivételt képeznek a string
és 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)
kimeneti
egy | b | isnull_a | isempty_a | strlen_a | isnull_b |
---|---|---|---|---|---|
téves | igaz | 0 | igaz | ||
téves | téves | 1 | igaz | ||
egy | 1 | téves | téves | 1 | téves |
Jegyzet
- Ha a fenti lekérdezést a Kusto.Explorerben futtatja, az összes
true
érték1
jelenik meg, és az összesfalse
érték0
ként jelenik meg. - A Kusto nem biztosítja a tábla oszlopának null értékekkel való korlátozását. Más szóval az SQL
NOT NULL
korlátozásának nincs egyenértékűsége.
Jegyzet
A Kusto nem biztosítja a tábla oszlopának null értékekkel való korlátozását. Más szóval az SQL NOT NULL
korlátozásának nincs egyenértékűsége.