CASE(検索)

CASE 文では、1 つ以上の条件が評価され、最初の条件が満たされた場合に結果が返されます。いずれの条件も満たされなかった場合は、デフォルトの結果が返されます。

関連情報: 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 文は最初に true になった conditionresult を返します。

  • else_result(省略可)- 任意の型のフィールドまたは式。ELSE else_result 句は、CASE ステートメントのデフォルトの結果を指定します。WHEN 節の条件がどれも満たされなかった場合、この節が返されます。CASE 文に ELSE 句が含まれておらず、WHEN 句のどの条件も満たされなかった場合、CASE 文は NULL を返します。

CASE ステートメントに指定できる ELSE 句は 1 つだけです。

検索 CASE の仕組み

検索対象の CASE ステートメントは CASE キーワードで始まり、END キーワードで終わります。その間に、以下のようなセクションまたは句を指定します。

  • WHEN: 評価の対象となる条件。1 つの CASE ステートメントに複数の WHEN 句を含めることができます。
  • THEN: WHEN 句の条件が true の場合に返される結果。CASE ステートメント内の WHEN 句ごとに 1 つの THEN 句を指定する必要があります。
  • ELSE: 省略可。WHEN 句のどの条件も true にならなかった場合、CASEELSE 句の値を返します。ELSE 句が指定されていない場合は、NULL を返します。

CASE は、後に続く各 WHEN 句を評価し、条件が true になる最初の結果を返します。残りの WHEN 句と ELSE 結果は評価されません。すべての WHEN 条件が false または NULL である場合、CASEELSE 結果を返します。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