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.
Hinweis: Es gibt zwei Formen der CASE
-Anweisung: „searched CASE
“ und „simple CASE
“. „Searched CASE
“-Anweisungen ermöglichen eine komplexere Logik, während „simple CASE
“-Anweisungen einfacher zu erstellen sind.
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 wird einecondition
ausgewertet. 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 die conditionWHEN
zutrifft. Bei mehrerenWHEN
-Anweisungen gibt dieCASE
-Anweisung dasresult
für die erste wahrecondition
zurück. else_result
(optional): ein Feld oder Ausdruck eines beliebigen Typs. DieELSE
-Anweisungelse_result
gibt 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, wird bei derCASE
-Anweisung der WertNULL
zurückgegeben.
Eine CASE
-Anweisung kann nur eine ELSE
-Anweisung enthalten.
Hinweis: Alle THEN
-Anweisungen in einer CASE
-Anweisung müssen denselben Datentyp zurückgeben. Wenn beispielsweise die erste THEN
-Anweisung den Datentyp Text zurückgibt, muss auch in zusätzlichen THEN
-Anweisungen der Fall sein.
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
ist eine Bedingung, die ausgewertet werden soll. Eine einzelneCASE
-Anweisung kann mehrereWHEN
-Anweisungen enthalten.THEN
ist das Ergebnis, das zurückgegeben werden soll, wenn die Bedingung derWHEN
-Anweisung erfüllt ist. Für jedeWHEN
-Anweisung in derCASE
-Anweisung muss es eineTHEN
-Anweisung geben.ELSE
(optional): Wenn keine derWHEN
-Anweisungen zutrifft, gibtCASE
den Wert derELSE
-Anweisung zurück, oderNULL
, wenn keineELSE
-Anweisung festgelegt ist.
CASE
wertet WHEN
-Anweisungen der Reihe nach aus und gibt das erste Ergebnis zurück, bei dem die Bedingung erfüllt ist. Die verbleibenden WHEN
-Anweisungen und das ELSE
-Ergebnis werden nicht ausgewertet. Wenn alle WHEN
-Bedingungen „false“ oder NULL
sind, gibt CASE
das ELSE
-Ergebnis zurück. Wenn in diesem Fall keine ELSE
-Anweisung festgelegt wurde, wird 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
Hinweis: 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ü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