CASE
文では、1 つ以上の条件が評価され、最初の条件が満たされた場合に結果が返されます。いずれの条件も満たされなかった場合は、デフォルトの結果が返されます。
注: CASE
文には、検索 CASE
式 と単純 CASE
式の 2 つの形式があります。検索 CASE
式の文を使用すると、より高度なロジックを使用でき、単純 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
句が必要です。THEN 句では、WHEN condition
が満たされた場合に返す結果を指定します。WHEN
句が複数ある場合、CASE
文では最初に true になったcondition
のresult
が返されます。 else_result
(省略可)- 任意の型のフィールドまたは式。ELSE
else_result
句では、CASE
文のデフォルトの結果を指定します。WHEN
句の条件がどれも満たされなかった場合、この句が返されます。CASE
文にELSE
句が含まれておらず、WHEN
句のどの条件も満たされなかった場合、CASE
文ではNULL
が返されます。
1 つの CASE
文に指定できる ELSE
句は 1 つだけです。
注: CASE
文の THEN
句で返されるデータ型は、すべての THEN 句で同じデータ型でなければなりません。たとえば、最初の THEN
句で返される値が Text データ型であれば、他の THEN
句でも Text データ型を返す必要があります。
検索 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 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
パラメータ値に応じて、異なるフィールドまたは値を返す
例 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