CASE (Searched)
CASE
陳述式會評估一或多個條件,並在符合第一個條件時傳回結果,或在不符合任何條件時傳回預設結果。
另請參閱:IF。
用法示範
CASE
的常見用途是建立新的資料類別或分組。舉例來說,如要將所選國家/地區值分組到「銷售地區」維度,您可以建立如下所示的 CASE
陳述式:
CASE WHEN Country IN ("USA","Canada","Mexico") THEN "North America" WHEN Country IN ("England","France") THEN "Europe" ELSE "Other" END
語法
CASE WHEN condition THEN result [WHEN condition THEN result] [...] [ELSE else_result] END
參數
condition
- 邏輯欄位或運算式。WHEN
子句會評估condition
,如果符合指定條件則傳回 true,如果不符合條件則傳回 false。result
- 任何類型的欄位或運算式。每個WHEN
子句都必須有相符的THEN
子句,指定該WHEN condition
為 true 時的結果。如有數個WHEN
子句,CASE
陳述式會傳回第一個 truecondition
的result
。else_result
(選用) - 任何類型的欄位或運算式。ELSE
else_result
子句會為CASE
陳述式指定預設結果。如果沒有任何WHEN
子句為 true,系統就會傳回這個子句。如果CASE
陳述式沒有ELSE
子句,且沒有任何WHEN
子句為 true,則CASE
陳述式會傳回NULL
。
CASE
陳述式只能有一個 ELSE
子句。
「已搜尋」CASE
的運作方式
搜尋的 CASE
陳述式以 CASE
關鍵字開頭,並以 END
關鍵字結尾。中間會穿插許多章節或條款:
WHEN
:要評估的條件。單一CASE
陳述式可以有多個WHEN
子句。THEN
:如果WHEN
子句的條件為 true,則傳回這個結果。CASE
陳述式中的每個WHEN
子句都必須有一個THEN
子句。ELSE
:選用。如果沒有任何WHEN
子句條件成立,CASE
會傳回ELSE
子句中的值,如果未指定ELSE
子句,則傳回NULL
。
CASE
會評估每個連續 WHEN
子句,並傳回條件為 true 的第一個結果。不會評估任何剩餘的 WHEN
子句與 ELSE
結果。如果所有 WHEN
條件都是 false 或 NULL
,CASE
會傳回 ELSE
結果;如果沒有 ELSE
子句,則傳回 NULL
。
範例
檢查不相等的情形
CASE WHEN Medium != "cpc" THEN "free" ELSE "paid" END
將數值維度值分類到離散值區
舉例來說,您可以根據訂單金額將訂單分成「小型」、「中型」或「大型」:
CASE WHEN Amount < 20 THEN "Small" WHEN Amount >= 20 and Amount < 100 THEN "Medium" WHEN Amount >= 100 THEN "Large" END
將日期維度值分類到不同的特徵分塊
舉例來說,您可以根據特定日期將一年劃分為兩個學期:
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
評估邏輯 AND 條件
CASE WHEN Country ISO Code = "US" AND Medium = "cpc" THEN "US - Paid" ELSE "other" END
評估邏輯 AND/OR 條件
CASE WHEN REGEXP_MATCH(Video Title, ".*Google Analytics*") AND is_livestream = TRUE OR Video Length > 600 THEN "GA Livestream or long video" END
根據參數值傳回不同的欄位或值
範例 1:根據所選參數值傳回維度。您可以運用這項技巧,讓使用者切換圖表使用的細分維度。
CASE WHEN Breakdown = "Product Category" THEN Product Category WHEN Breakdown = "Store" THEN Store END
您也可以使用簡單的 CASE 語法編寫這項內容:
CASE Breakdown WHEN "Product Category" THEN Product Category WHEN "Store" THEN Store END
示例 2:根據參數值傳回不同的指標。
CASE WHEN Show Adjusted Cost = TRUE THEN Cost + Adjustments ELSE Cost END
巢狀 CASE
陳述式
您可以巢狀方式使用 CASE
陳述式,建立更複雜的分支邏輯:
CASE WHEN REGEXP_CONTAINS(SKU, "Hats") THEN CASE WHEN Color = "blue" THEN "BLUE HAT" ELSE "JUST A HAT" END ELSE "NOT A HAT" END