Valeurs Null
S’applique à : ✅Microsoft Fabric✅Azure Data Explorer✅Azure Monitor✅Microsoft Sentinel
Tous les types de données scalaires dans Kusto ont une valeur spéciale qui représente une valeur manquante. Cette valeur est appelée valeur Null ou Null.
Remarque
Le string
type de données ne prend pas en charge les valeurs Null.
Littéraux Null
La valeur Null d’un type scalaire T est représentée dans le langage de requête par le littéral T(null)
Null .
La requête suivante retourne une seule ligne pleine de valeurs Null :
print bool(null), datetime(null), dynamic(null), guid(null), int(null), long(null), real(null), double(null), timespan(null)
Prédicats sur les valeurs Null
La fonction isnull()
scalaire peut être utilisée pour déterminer si une valeur scalaire est la valeur Null. La fonction isnotnull()
correspondante peut être utilisée pour déterminer si une valeur scalaire n’est pas la valeur Null.
Remarque
Étant donné que le string
type ne prend pas en charge les valeurs Null, nous vous recommandons d’utiliser les fonctions et les isempty()
isnotempty()
fonctions.
Égalité et inégalité des valeurs Null
- Égalité (
==
) : L’application de l’opérateur d’égalité à deux valeurs Null génèrebool(null)
. L’application de l’opérateur d’égalité à une valeur Null et d’une valeur non Null génèrebool(false)
. - Inégalité (
!=
) : L’application de l’opérateur d’inégalité à deux valeurs Null génèrebool(null)
. L’application de l’opérateur d’inégalité à une valeur Null et d’une valeur non Null génèrebool(true)
.
Par exemple :
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)
Sortie
val | IsBiggerThan3 | IsBiggerThan3OrNull | IsEqualToNull | IsNotEqualToNull |
---|---|---|---|---|
5 | true | true | false | true |
null | null | true | null | null |
Valeurs null et fonctions d’agrégation
Lorsque vous appliquez les opérateurs suivants aux entités qui incluent des valeurs Null, les valeurs Null sont ignorées et ne sont pas prises en compte dans le calcul :
- 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()
Valeurs Null et where
opérateur
Opérateur où l’opérateur utilise des expressions booléennes pour déterminer s’il faut émettre chaque enregistrement d’entrée dans la sortie. Cet opérateur traite les valeurs Null comme si elles sont bool(false)
. Enregistrements pour lesquels le prédicat retourne la valeur Null sont supprimés et n’apparaissent pas dans la sortie.
Par exemple :
datatable(ival:int, sval:string)[5, "a", int(null), "b"]
| where ival != 5
Sortie
ival | sval |
---|---|
null | b |
Valeurs Null et opérateurs binaires
Les opérateurs binaires sont des opérateurs scalaires qui acceptent deux valeurs scalaires et produisent une troisième valeur. Par exemple, supérieur à (>) et Boolean AND (&) sont des opérateurs binaires.
Pour tous les opérateurs binaires, à l’exception des exceptions à cette règle, la règle est la suivante :
Si une ou les deux valeurs entrées dans l’opérateur binaire sont des valeurs Null, la sortie de l’opérateur binaire est également la valeur Null. En d’autres termes, la valeur null est « sticky ».
Exceptions à cette règle
- Pour les opérateurs d’égalité (
==
) et d’inégalité (!=
), si l’une des valeurs est null et que l’autre valeur n’est pas null, le résultat est soitbool(false)
oubool(true)
, respectivement. - Pour l’opérateur AND logique (&), si l’une des valeurs est
bool(false)
, le résultat est égalementbool(false)
. - Pour l’opérateur OR (
||
) logique, si l’une des valeurs estbool(true)
, le résultat est égalementbool(true)
.
Par exemple :
datatable(val:int)[5, int(null)]
| extend Add = val + 10
| extend Multiply = val * 10
Sortie
val | Ajouter | Multiplier |
---|---|---|
5 | 15 | 50 |
null | null | null |
Valeurs Null et opérateur NOT (!
) logique
L’opérateur NOT logique not() génère la valeur bool(null)
si l’argument est la valeur Null.
Valeurs Null et in
opérateur
- L’opérateur in se comporte comme une or logique de comparaisons d’égalité.
- L’opérateur
!in
se comporte comme une logiqueAND
de comparaisons d’inégalités.
Valeurs null et ingestion des données
Pour la plupart des types de données, une valeur manquante dans la source de données produit une valeur Null dans la cellule de table correspondante. Toutefois, les colonnes de type string
et de formats de données CSV (ou de type CSV) sont une exception à cette règle, et une valeur manquante produit une chaîne vide.
Par exemple :
.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)
Sortie
a | b | isnull_a | isempty_a | strlen_a | isnull_b |
---|---|---|---|---|---|
false | true | 0 | true | ||
false | false | 1 | true | ||
a | 1 | false | false | 1 | false |
Remarque
- Si vous exécutez la requête ci-dessus dans Kusto.Explorer, toutes les
true
valeurs sont affichées en tant que1
, et toutes lesfalse
valeurs sont affichées en tant que0
. - Kusto n’offre pas de moyen de limiter la colonne d’une table à l’utilisation de valeurs Null. En d’autres termes, il n’existe aucun équivalent à la contrainte de
NOT NULL
SQL.
Remarque
Kusto n’offre pas de moyen de limiter la colonne d’une table à l’utilisation de valeurs Null. En d’autres termes, il n’existe aucun équivalent à la contrainte de NOT NULL
SQL.