CASE では 1 つ以上の条件を定義し、条件が満たされると結果が返されます。どの条件にも該当しない場合のデフォルトの結果も定義できます。
この記事の内容:例
CASE は一般的に、データの新しいカテゴリやグループを作成する場合に使用されます。たとえば、特定の国の値を「営業地域」ディメンションにまとめるには、次のような CASE 式を作成します。
CASE
WHEN Country IN ("USA","Canada","Mexico") THEN "North America"
WHEN Country IN ("England","France") THEN "Europe"
ELSE "Other"
END
検索 CASE 式の仕組み
CASE 式は CASE キーワードで始まり、END キーワードで終わります。その間に、以下のようなセクションまたは「節」を指定します。
- WHEN: 評価の対象となる条件。1 つの CASE 式に複数の WHEN 節を含めることができます。
- THEN: WHEN 節の条件が true の場合に返される結果。CASE 式内の WHEN 節ごとに 1 つの THEN 節を指定する必要があります。
- ELSE: 省略可。WHEN 節のどの条件も true にならなかった場合、CASE は ELSE 節の値を返します。ELSE 節が指定されていない場合は、
NULL
を返します。
CASE は、後に続く各 WHEN 節を評価し、条件が true になる最初の結果を返します。残りの WHEN 節と ELSE 結果は評価されません。すべての WHEN 条件が false または NULL である場合、CASE は ELSE 結果を返します。ELSE 節が指定されていない場合は NULL を返します。
検索 CASE 式の構文
CASE
WHEN condition THEN result
[WHEN condition THEN result]
[...]
[ELSE else_result]
END
パラメータ
WHEN 条件
WHEN 条件は与えられたデータを評価し、指定された条件が満たされていれば true、満たされていなければ false を返します。WHEN 条件には、有効なブール式を使用できます。
THEN 結果
各 WHEN 条件には、対応する THEN 節が必要です。THEN 節では、条件が満たされた場合に返す結果を指定します。WHEN 条件が複数ある場合、CASE 式では最初に true になった条件の結果が返されます。
注意事項
THEN 節で返される結果は、すべて同じ型でなければなりません。
たとえば、最初の THEN 節で返される値がテキストであれば、他の THEN 節および ELSE 節でもテキストを返す必要があります。
ELSE else_result
省略可能な ELSE 節では、デフォルトの結果を指定します。WHEN 節の条件がどれも満たされなかった場合、この値が返されます。CASE 式に ELSE 節が含まれておらず、WHEN 節のどの条件も満たされなかった場合は、NULL
が返されます。1 つの CASE 式に指定できる ELSE 節は 1 つだけです。
その他の例
大小関係を確認する場合は、以下のように指定します。
CASE WHEN Medium != "cpc" THEN "free" ELSE "paid" END
数値ディメンションの値を複数のバケットに分類します。たとえば、注文金額に基づいて注文を「Small」、「Medium」、「Large」に分類することができます。
CASE WHEN Amount < 20 THEN "Small" WHEN Amount >= 20 and Amount < 100 THEN "Medium" WHEN Amount >= 100 THEN "Large" 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
パラメータを評価します。たとえば、「Sales Target」パラメータを設定し、目標を達成した注文を確認できるようにすることができます。
CASE WHEN Qty Sold >= Sales target parameter THEN 1 ELSE 0 END
パラメータ値に応じて、異なるフィールドまたは値を返します。
最初の例では、選択されたパラメータ値に基づいてディメンションが返されます。この手法を使用すると、グラフで使用されている内訳ディメンションをユーザーが切り替えられるようにすることができます。
2 番目の例は、パラメータ値に基づいて異なる指標を返す方法を示しています。
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
CASE WHEN Show Adjusted Cost = TRUE THEN Cost + Adjustments ELSE Cost END