Bedingte Logik in AQL-Abfragen

Arbeiten Sie in AQL-Abfragen mit bedingter Logik, indem Sie IF- und CASE-Ausdrücke verwenden.

Mithilfe bedingter Logik in AQL-Abfragen können Sie abhängig davon, ob die Klauselbedingung wahr oder falsch ist, alternative Optionen bereitstellen.

CASE-Anweisungen

CASE-Ausdrücke geben ein boolesches Ergebnis zurück, d. h. der Ausdruck ist entweder wahr oder falsch. Ist ein Ausdruck wahr, wird der Wert des betreffenden CASE-Ausdrucks zurückgegeben und die Verarbeitung gestoppt. Ist der Ausdruck falsch, wird der Wert der ELSE-Klausel zurückgegeben.

Im folgenden Beispiel lautet der zurückgegebene Wert für den Ausdruck CASE , wenn der Benutzername 'root' ist:Admin root. Wenn der Benutzername admin lautet, wird der Wert des CASE -Ausdrucks, der zurückgegeben wird,Admin user. Wenn die CASE -Ausdrücke einen booleschen Wert ' false' zurückgeben, wird der Wert der Klausel ELSE zurückgegeben.

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

Ist die WHEN-Anweisung wahr, wird die THEN-Anweisung verarbeitet; andernfalls wird die Verarbeitung beendet.

IF-, THEN-, ELSE-Anweisungen

Anweisungen zwischen THEN und ELSE werden verarbeitet, wenn die IF-Anweisung wahr ist.

Wenn in diesem Beispiel die IF-Bedingung wahr ist, wird 'ADMIN' zurückgegeben, wenn der Benutzername 'root'lautet. Andernfalls wird der Benutzername aus dem Ereignisprotokoll zurückgegeben.

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

Im folgenden Beispiel muss der Benutzername aus dem Assetmodell abgerufen werden, wenn das Protokoll keinen Benutzernamen enthält. Andernfalls wird der Benutzername aus dem Ereignisprotokoll zurückgegeben.

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