Logique conditionnelle dans les requêtes AQL

Vous pouvez soumettre une logique conditionnelle dans les requêtes AQL en utilisant des expressions IF et CASE.

Vous pouvez utiliser dans vos requêtes AQL une logique conditionnelle afin de fournir des options alternatives selon que l'évaluation de la condition de clause renvoie true ou false.

Instructions CASE

Les expressions CASE renvoie la valeur booléenne true ou false. Lorsqu'une expression renvoie la valeur true, la valeur de l'expression CASE est renvoyée et le traitement est arrêté. Si elle renvoie false, la valeur de la clause ELSE est renvoyée.

Dans l'exemple suivant, lorsque le nom d'utilisateur est root, la valeur de l'expression CASE renvoyée estAdmin root. Lorsque le nom d'utilisateur est admin, la valeur de l'expression CASE qui est renvoyée estAdmin user. Si les expressions CASE renvoient une valeur booléenne false, la valeur de la clause ELSE est renvoyée.

SELECT CASE username 
WHEN 'root' 
THEN 'Admin root' 
WHEN 'admin' 
THEN 'Admin user' 
ELSE 'other' END FROM events 

Lorsque l'instruction WHEN renvoie la valeur true, l'instruction THEN est alors traitée. Sinon, le traitement s'arrête.

Instructions IF, THEN, ELSE

Les instructions entre THEN et ELSE sont traitées lorsque l'instruction IF renvoie la valeur true.

Dans cet exemple, lorsque la condition IF est vraie, 'ADMIN' est renvoyé lorsque le nom d'utilisateur est 'root', sinon le nom d'utilisateur est renvoyé par le journal des événements.

SELECT sourceip, 
IF username = 'root' 
THEN 'ADMIN' 
ELSE username AS user FROM events 

Dans l'exemple suivant, si le journal n'a pas de nom d'utilisateur, celui-ci provient du modèle d'actif. Autrement, le nom d'utilisateur est renvoyée à partir du journal d'événements.

SELECT sourceip,
IF username IS NULL 
THEN ASSETUSER(sourceip)
ELSE username AS username FROM events
GROUP BY username 
LAST 2 DAYS