日志服务 条件表达式

CASE WHEN condition1 THEN result1 [WHEN condition2 THEN result2] [ELSE result3]END。

相关产品
日志服务 产品页,含版本规格、价格与购买入口。

这篇说说条件表达式的语法和示例。

表达式 语法 说明
CASE WHEN 表达式 CASE WHEN condition1 THEN result1 [WHEN condition2 THEN result2] [ELSE result3] END 过条件判断,对数据进行归类。
IF 表达式 IF(condition, result1) 如果 condition 为 true,则返回 result1,否则返回 null。
 IF(condition, result1, result2) 如果 condition 为 true,则返回 result1,否则返回 result2。
NULLIF 表达式 NULLIF(expression1, expression2) 比较两个表达式的值是否相等。如果相等,则返回 null,否则返回第一个表达式的值。
TRY 表达式 TRY(expression) 捕获异常信息,使得系统继续执行查询和分析操作。
COALESCE 表达式 COALESCE(expression1, expression2…) 获取多个表达式中的第一个非 NULL 值。

一、CASE WHEN 语法

CASE WHEN 语法用于对数据进行归类。

三、参数说明

参数 说明
condition 条件表达式。
result 返回结果。

五、示例1

从 http_user_agent 字段值中提取浏览器信息,归为 Chrome、Safari 和 unknown 三种类型并计算三种类型对应的访问 PV。

* |SELECT CASE WHEN http_user_agent like '%Chrome%' then 'Chrome' WHEN http_user_agent like '%Safari%' then 'Safari' ELSE 'unknown' END AS http_user_agent, count(*) AS pvGROUP BY http_user_agent

六、示例2

统计不同请求时间的分布情况。

* |SELECT CASE WHEN request_time < 0.001 then 't0.001' WHEN request_time < 0.01 then 't0.01' WHEN request_time < 0.1 then 't0.1' WHEN request_time < 1 then 't1' ELSE 'overtime' END AS request_time, count(*) AS pvGROUP BY request_time

七、IF 语法

IF 语法用于对数据进行归类,类似于 CASE WHEN 表达式。

八、语法

·如果 condition 为 true,则返回 result1,否则返回 null。

IF(condition, result1)

·如果 condition 为 true,则返回 result1,否则返回 result2。

IF(condition, result1, result2)

九、参数说明

参数 说明
condition 条件表达式。
result 返回结果。

十、示例

计算状态码为200的请求占所有请求的比例。

* |SELECT sum(IF(status = 200, 1, 0)) * 1.0 / count(*) AS status_200_percentag

十一、NULLIF 表达式

NULLIF 表达式用于比较两个表达式的值是否相等。如果相等,则返回 null,否则返回第一个表达式的值。

十二、语法

NULLIF(expression1, expression2)

十三、参数说明

参数 说明
expression 任何有效的标量表达式。

十四、示例

判断 server_addr、http_host 两个字段的值是否相同。当不相同时,返回 server_addr 字段的值。

* | SELECT NULLIF(server_addr,http_host)

十五、TRY 表达式

TRY 表达式用于捕获异常信息,使得系统继续执行查询和分析操作。

十六、语法

TRY(expression)

十七、参数说明

参数 说明
expression 任何类型的表达式。

十八、示例

当执行 regexp_extract 函数发生异常时,try函数会捕获异常信息并继续查询和分析操作,返回查询和分析结果。

* | SELECT TRY(regexp_extract(uri, '.*\\/(index.*)', 1)) AS file, count(*) AS count GROUP BY file

十九、COALESCE 表达式

COALESCE 表达式用于获取多个表达式中的第一个非 NULL 值。

20、语法

COALESCE(expression1, expression2…)

21、参数说明

参数 说明
expression 任何有效的标量表达式。

22、示例

* | select COALESCE(null, 'test')

赞 (0)
上一篇 4天前
下一篇 4天前