Partager via


assert()

S’applique à : ✅Microsoft Fabric✅Azure Data ExplorerAzure MonitorMicrosoft 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")