Hive 基本教程

Hive SQL

Hive 笔记

original icon
版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://www.knowledgedict.com/tutorial/hive-sql-if-function.html

Hive SQL 条件函数 IF 详解

Hive SQL 内置函数全解 Hive SQL 内置函数全解


Hive SQL 条件函数 IF 是用于处理单个列的判断查询结果,形式为 if(条件表达式, 结果1, 结果2),相当于 java 中的三目运算符,只是 if 后面的表达式类型可以不一样。

语法说明

语法

IF(boolean testCondition, T valueTrue, T valueFalseOrNull)

说明

如果 testConditiontrue,就返回 valueTrue,否则返回 valueFalseOrNull;其中 valueTruevalueFalseOrNull 为泛型。

常用例子

IF 函数多个条件

假设通过一个 sql 聚合不同时间段的统计数据,就有可能用到 IF 函数,设定表为 stat,其中分区字段为 dt 表示日期,字段 act 分别表示 1 为曝光行为,2 为点击行为,示例如下:

SELECT
   item_id AS item_id,
   COUNT(IF(act = 1 AND dt >= 20200929 AND dt <= 20201001, 1, NULL)) AS impression_3,
   COUNT(IF(act = 2 AND dt >= 20200929 AND dt <= 20201001, 1, NULL)) AS click_3,
   IF(COUNT(IF(act = 1 AND dt >= 20200929 AND dt <= 20201001, 1, NULL)) > 0, round(COUNT(IF(act = 2 AND dt >= 20200929 AND dt <= 20201001, 1, NULL)) / COUNT(IF(act = 1 AND dt >= 20200929 AND dt <= 20201001, 1, NULL)), 4), 0) AS ctr_3,
   COUNT(IF(act = 1, 1, NULL)) AS impression_30,
   COUNT(IF(act = 2, 1, NULL)) AS click_30,
   IF(COUNT(IF(act = 1, 1, NULL)) > 0, round(COUNT(IF(act = 2, 1, NULL)) / COUNT(IF(act = 1, 1, NULL)), 4), 0) AS ctr_30,
FROM stat
WHERE dt >= 20200902
   AND dt <= 20201001 
GROUP BY item_id

如上 SQL 可以看出,一个 SQL 一次性地获取最近 3 天和 30 天的曝光(impression)、点击(click)和点击率(ctr)数据,利用 IF 多个条件划定时间范围。

Hive SQL 内置支持绝大多数 SQL 的内置函数,其中主要包括数学函数,类型转换函数,条件函数,字符函数,聚合函数,表生成函数等等。 ...
Hive SQL 中将字符串拼接的函数是 CONCAT,它返回指定参数的连接字符串,此函数可以接受任意数量的输入字符串。 ...
Hive 提供了取模操作的函数 pmod,也叫做取余函数,它可以处理 int 或 double 类型参数,返回取余整数或浮点数。 ...
HiveQL 是 Hive 的查询语言。和普遍使用的所有 SQL 方言一样,它不完全遵守任何一种 ANSI SQL 标准的修订版。HiveQ ...
Hive SQL 聚合统计函数 COUNT 类似于标准 SQL 的 COUNT 函数,用来计算符合条件的行数。 ...