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ékre bool(null). Az egyenlőségi operátor alkalmazása null értékre és nem null értékű hozamra bool(false).
  • Egyenlőtlenség (!=): 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ékű hozamra 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)

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:

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 vagy bool(false) vagy bool(true).
  • A logikai ÉS (&&) 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

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 logikai AND 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 meg 1, és az összes false érték a néven jelenik meg 0.
  • 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 .