CASE (Searched)
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(可选)- 任意类型的字段或表达式。ELSEelse_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 或 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