assert()
S’applique à : ✅Microsoft Fabric✅Azure Data Explorer✅Azure Monitor✅Microsoft Sentinel
Vérifie une condition. Si la condition est false, génère des messages d’erreur et échoue la requête.
Remarque
La assert
fonction est évaluée pendant la phase d’analyse des requêtes, avant les optimisations telles que le pliage constant et le prédicat court-circuiting appliqués.
Remarque
Les paramètres donnés à assert
doivent être évalués en constantes pendant la phase d’analyse de requête. En d’autres termes, il peut être construit à partir d’autres expressions référençant uniquement des constantes et ne peut pas être lié au contexte de ligne.
Syntaxe
assert(
message de condition,
)
En savoir plus sur les conventions de syntaxe.
Paramètres
Nom | Type | Requise | Description |
---|---|---|---|
condition | bool |
✔️ | Expression conditionnelle à évaluer. La condition doit être évaluée en constante pendant la phase d’analyse de requête. |
message | string |
✔️ | Message utilisé si l’assertion est évaluée à false . |
Retours
Retourne true
si la condition est true
.
Déclenche une erreur sémantique si la condition est évaluée à false
.
Exemples
La requête suivante définit une fonction checkLength()
qui vérifie la longueur de chaîne d’entrée et utilise assert
pour valider le paramètre de longueur d’entrée (vérifie qu’il est supérieur à zéro).
let checkLength = (len:long, s:string)
{
assert(len > 0, "Length must be greater than zero") and
strlen(s) > len
};
datatable(input:string)
[
'123',
'4567'
]
| where checkLength(len=long(-1), input)
L’exécution de cette requête génère une erreur : assert() has failed with message: 'Length must be greater than zero'
Exemple d’exécution avec entrée valide len
:
let checkLength = (len:long, s:string)
{
assert(len > 0, "Length must be greater than zero") and strlen(s) > len
};
datatable(input:string)
[
'123',
'4567'
]
| where checkLength(len=3, input)
Sortie
input |
---|
4567 |
La requête suivante échoue toujours, démontrant que la assert
fonction est évaluée même si l’opérateur where b
ne retourne aucune donnée :b
false
let b=false;
print x="Hello"
| where b
| where assert(b, "Assertion failed")