CASE (Searched)
CASE
陳述式會評估一或多個條件,並在符合第一個條件時傳回結果,如果沒有任何條件符合,則傳回預設結果。
另請參閱:IF。
用法示範
CASE
的常見用途是建立新的資料類別或群組。舉例來說,如要將所選國家/地區值分組為「Sales Region」維度,您可以建立如下所示的 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
陳述式會針對第一個為 true 的condition
傳回result
。else_result
(選用) - 任何類型的欄位或運算式。ELSE
else_result
子句會為CASE
陳述式指定預設結果。如果所有WHEN
子句均為假,系統就會傳回這個子句。如果CASE
陳述式沒有ELSE
子句,且所有WHEN
子句均為假,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