Megosztás a következőn keresztül:


Null értékek

A következőkre vonatkozik: ✅Microsoft FabricAzure Data ExplorerAzure MonitorMicrosoft 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ékre bool(null). Az egyenlőségi operátor alkalmazása null értékre és nem null értékre bool(false).
  • Egyenlőtlenségi (!=): Az egyenlőtlenségi operátor alkalmazása két null értékre bool(null). Az egyenlőtlenségi operátor alkalmazása null értékre és nem null értékre bool(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:

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 vagy bool(false) vagy bool(true)lesz.
  • A logikai AND (&&) operátor esetében, ha az egyik érték bool(false), akkor az eredmény is bool(false).
  • A logikai VAGY (||) operátor esetében, ha az egyik érték bool(true), az eredmény is bool(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 logikai AND 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ék 1jelenik meg, és az összes false érték 0ké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.