CASE
definiert eine oder mehrere Bedingungen und gibt ein Ergebnis zurück, wenn eine Bedingung erfüllt ist. Für den Fall, dass keine der Bedingungen erfüllt wird, können Sie ein Standardergebnis definieren.
Beispiel
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 folgenden CASE
-Ausdruck erstellen:
CASE
WHEN Country IN ("USA","Canada","Mexico") THEN "North America"
WHEN Country IN ("England","France") THEN "Europe"
ELSE "Other"
END
Funktionsweise von „searched CASE
“
Ein CASE-
Ausdruck beginnt immer mit CASE
und endet mit END
. Dazwischen befinden sich die einzelnen Abschnitte oder Anweisungen:
WHEN
ist eine Bedingung, die ausgewertet werden soll. EinCASE
-Ausdruck 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 imCASE
-Ausdruck muss eineTHEN
-Anweisung angegeben werden.ELSE:
ist optional. Falls keine Bedingung derWHEN
-Anweisung erfüllt ist, 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.
Syntax für „searched CASE“
CASE
WHEN condition THEN result
[WHEN condition THEN result]
[...]
[ELSE else_result]
END
Parameter
WHEN condition
Mit WHEN
-Bedingungen werden Daten ausgewertet. Ist die Bedingung erfüllt, wird „true“ zurückgegeben, sonst „false“. Sie können jeden gültigen booleschen Ausdruck als WHEN
-Bedingung verwenden.
THEN result
Für jede WHEN
-Bedingung muss eine THEN
-Anweisung angegeben werden. Sie legt fest, welche Ergebnisse zurückgegeben werden, wenn die Bedingung erfüllt ist. Umfasst der CASE
-Ausdruck mehrere WHEN
-Bedingungen, wird das Ergebnis zurückgegeben, das für die erste erfüllte Bedingung festgelegt ist.
Hinweise
Alle möglichen Ergebnisse in einer THEN
-Anweisung müssen denselben Typ haben.
Wenn in der ersten THEN
-Anweisung z. B. Text zurückgegeben wird, muss das Ergebnis aller weiteren THEN
-Anweisungen und der ELSE
-Anweisung auch Text sein.
ELSE else_result
Mit der optionalen ELSE
-Anweisung können Sie ein Standardergebnis festlegen. Es wird zurückgegeben, falls keine der WHEN
-Anweisungen erfüllt ist. Wenn ein CASE
-Ausdruck keine ELSE
-Anweisung enthält und keine der WHEN
-Anweisungen erfüllt ist, wird NULL
zurückgegeben.
Pro CASE
-Ausdruck ist eine ELSE
-Anweisung zulässig.
Weitere 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
Einen Parameter auswerten
Sie können beispielsweise einen Parameter für das Verkaufsziel (Sales target) festlegen und anpassen, um zu sehen, bei welchen Bestellungen das Ziel erreicht wurde:
CASE WHEN Qty Sold >= Sales target parameter THEN 1 ELSE 0 END
Je nach Parameterwert ein anderes Feld oder einen anderen Wert zurückgeben
Im ersten Beispiel wird eine Dimension auf Grundlage des ausgewählten Parameterwerts zurückgegeben. So können Sie Nutzern die Möglichkeit geben, die Dimension für die Aufschlüsselung zu wechseln, die in einem Diagramm verwendet wird.
Im zweiten Beispiel sehen Sie, wie ein anderer Messwert auf Grundlage eines Parameterwerts zurückgegeben 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
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 Color = "blue"
ELSE
"NOT A HAT"
END