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 子句,用于指定 WHEN condition 为 true 时应返回的结果。如果有多个 WHEN 子句,CASE 语句会针对第一个为 true 的 condition 返回 result

  • else_result(可选)- 任意类型的字段或表达式。ELSE else_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 子句条件均不为 true,CASE 会返回 ELSE 子句中的值,如果未指定 ELSE 子句,则返回 NULL

CASE 会计算每个连续 WHEN 子句,并在条件为 true 的情况下返回第一个结果。其余所有 WHEN 子句和 ELSE 结果均不进行计算。如果所有 WHEN 条件均为 false 或 NULLCASE 会返回 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

评估逻辑 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