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(選用) - 任何類型的欄位或運算式。ELSEelse_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