CASE (Searched)
CASE-Anweisungen werten eine oder mehrere Bedingungen aus und geben ein Ergebnis zurück, wenn die erste Bedingung erfüllt ist, oder ein Standardergebnis, wenn keine der Bedingungen erfüllt ist.
Siehe auch: IF
Verwendungsbeispiel
CASE wird oft dazu verwendet, neue Datenkategorien oder ‑gruppen zu erstellen. Wenn Sie z. B. bestimmte Länderwerte in einer Dimension namens „Verkaufsgebiet“ gruppieren möchten, könnten Sie die folgende CASE-Anweisung erstellen:
CASE
WHEN Country IN ("USA","Canada","Mexico") THEN "North America"
WHEN Country IN ("England","France") THEN "Europe"
ELSE "Other"
END
Syntax
CASE
WHEN condition THEN result
[WHEN condition THEN result]
[...]
[ELSE else_result]
END
Parameter
condition: ein logisches Feld oder ein logischer Ausdruck. MitWHEN-Anweisungen wirdconditionausgewertet. Ist die Bedingung erfüllt, wird „true“ zurückgegeben, sonst „false“.result: ein Feld oder Ausdruck eines beliebigen Typs. Für jedeWHEN-Anweisung muss eine übereinstimmendeTHEN-Anweisung angegeben werden. Sie legt fest, welche Ergebnisse zurückgegeben werden, wenn dieWHEN conditionzutrifft. Wenn es mehrereWHEN-Anweisungen gibt, gibt dieCASE-Anweisung dasresultfür die erste wahreconditionzurück.else_result(optional): ein Feld oder Ausdruck eines beliebigen Typs. DieELSE-Klauselelse_resultgibt ein Standardergebnis für dieCASE-Anweisung an. Sie wird zurückgegeben, falls keine derWHEN-Anweisungen erfüllt ist. Wenn eineCASE-Anweisung keineELSE-Anweisung enthält und keine derWHEN-Anweisungen zutrifft, gibt dieCASE-AnweisungNULLzurück.
Eine CASE-Anweisung kann nur eine ELSE-Anweisung enthalten.
So funktioniert „searched CASE“
Eine „searched CASE“-Anweisung beginnt mit dem Begriff CASE und endet mit dem Begriff END. Dazwischen befinden sich die einzelnen Abschnitte oder Anweisungen:
WHEN: Eine Bedingung, die ausgewertet werden soll. EineCASE-Anweisung kann mehrereWHEN-Anweisungen enthalten.THEN: Das Ergebnis, das zurückgegeben wird, wenn die Bedingung derWHEN-Anweisung erfüllt ist. Für jedeWHEN-Anweisung in IhrerCASE-Anweisung muss eineTHEN-Anweisung vorhanden sein.ELSE: Optional. Wenn keine der Bedingungen derWHEN-Anweisung erfüllt ist, gibtCASEden Wert derELSE-Anweisung zurück oderNULL, wenn keineELSE-Anweisung angegeben ist.
CASE wertet jede aufeinanderfolgende WHEN-Anweisung aus und gibt das erste Ergebnis zurück, bei dem die Bedingung erfüllt ist. Alle verbleibenden WHEN-Anweisungen und das ELSE-Ergebnis werden nicht ausgewertet. Wenn alle WHEN-Bedingungen „false“ oder NULL sind, gibt CASE das Ergebnis ELSE zurück. Wenn es keine ELSE-Anweisung gibt, wird der Wert NULL zurückgegeben.
Beispiele
Nach Ungleichheit suchen
CASE WHEN Medium != "cpc" THEN "free" ELSE "paid" END
Numerische Dimensionswerte in separate Buckets einteilen
Beispielsweise könnten Sie Bestellungen je nach Bestellwert in „Small“, „Medium“ und „Large“ unterteilen:
CASE
WHEN Amount < 20 THEN "Small"
WHEN Amount >= 20 and Amount < 100 THEN "Medium"
WHEN Amount >= 100 THEN "Large"
END
Datumsdimensionswerte in separate Buckets einteilen
Sie können beispielsweise ein Jahr anhand bestimmter Daten in Semester unterteilen:
CASE
WHEN Date >= DATE(2018, 9, 23) and Date < DATE(2018, 12, 13) THEN "Fall Semester 2018"
WHEN Date >= DATE(2018, 1, 3) and Date < DATE(2019, 3, 21) THEN "Winter Semester 2019"
WHEN Date >= DATE(2019, 3, 27) and Date < DATE(2019, 6, 12) THEN "Spring Semester 2019"
ELSE "Uncategorized"
END
Eine logische AND-Bedingung auswerten
CASE
WHEN Country ISO Code = "US" AND Medium = "cpc"
THEN "US - Paid"
ELSE "other"
END
Eine logische AND/OR-Bedingung auswerten
CASE
WHEN REGEXP_MATCH(Video Title, ".*Google Analytics*")
AND is_livestream = TRUE
OR Video Length > 600
THEN "GA Livestream or long video"
END
Je nach Parameterwert ein anderes Feld oder einen anderen Wert zurückgeben
Beispiel 1: Es wird eine Dimension auf Grundlage des ausgewählten Parameterwerts zurückgeben. So können Sie Nutzern die Möglichkeit geben, die Dimension für die Aufschlüsselung zu wechseln, die in einem Diagramm verwendet wird.
CASE
WHEN Breakdown = "Product Category" THEN Product Category
WHEN Breakdown = "Store" THEN Store
END
Dafür kann auch die Syntax für simple CASE verwendet werden:
CASE Breakdown
WHEN "Product Category" THEN Product Category
WHEN "Store" THEN Store
END
Beispiel 2: Es wird ein anderer Messwert basierend auf einem Parameterwert zurückgegeben.
CASE WHEN Show Adjusted Cost = TRUE THEN Cost + Adjustments ELSE Cost END
Verschachtelte CASE-Anweisungen
Sie können CASE-Anweisungen verschachteln, um eine komplexere Verzweigungslogik zu erstellen:
CASE WHEN REGEXP_CONTAINS(SKU, "Hats") THEN
CASE WHEN Color = "blue"
THEN "BLUE HAT" ELSE "JUST A HAT"
END
ELSE "NOT A HAT"
END