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 wirdcondition
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 dieWHEN condition
zutrifft. Wenn es mehrereWHEN
-Anweisungen gibt, gibt dieCASE
-Anweisung dasresult
für die erste wahrecondition
zurück.else_result
(optional): ein Feld oder Ausdruck eines beliebigen Typs. DieELSE
-Klauselelse_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, gibt dieCASE
-AnweisungNULL
zurü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, 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
-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