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: WENN.
Verwendungsbeispiel
CASE
wird oft dazu verwendet, neue Datenkategorien oder ‑gruppen zu erstellen. Wenn Sie z. B. bestimmte Länderwerte in einer Dimension namens „Vertriebsregion“ 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 wirdcondition
ausgewertet. Ist die Bedingung erfüllt, wird „true“ zurückgegeben, sonst „false“.result
: ein Feld oder Ausdruck eines beliebigen Typs. JedeWHEN
-Anweisung muss eine übereinstimmendeTHEN
-Anweisung haben, die die Ergebnisse angibt, die zurückgegeben werden sollen, wenn dieseWHEN condition
erfüllt ist. Wenn es mehrereWHEN
-Anweisungen gibt, gibt dieCASE
-Anweisung dieresult
für die erste wahrecondition
zurück.else_result
(optional): ein Feld oder Ausdruck eines beliebigen Typs. DieELSE
else_result
-Klausel gibt ein Standardergebnis für dieCASE
-Anweisung an. Sie wird zurückgegeben, falls keine derWHEN
-Anweisungen erfüllt ist. Wenn eineCASE
-Anweisung keineELSE
-Klausel enthält und keine derWHEN
-Klauseln zutrifft, gibt dieCASE
-AnweisungNULL
zurück.
Eine CASE
-Anweisung kann nur eine ELSE
-Klausel enthalten.
Funktionsweise von „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
-Klausel in IhrerCASE
-Anweisung muss eineTHEN
-Klausel vorhanden sein.ELSE
: Optional. Wenn keine Bedingung derWHEN
-Anweisung erfüllt ist, gibtCASE
den 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
-Klauseln und das ELSE
-Ergebnis werden nicht ausgewertet. Wenn alle WHEN
-Bedingungen falsch sind oder NULL
, 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
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
Sie können diese Formel auch mit der Syntax für „simple CASE“ schreiben:
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ückgeben.
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