跳到主要内容

常用内置函数

HiveQL 是 Apache Hive 的查询语言,它允许用户使用类似 SQL 的语法来查询和分析存储在 Hadoop 分布式文件系统(HDFS)中的大数据。HiveQL 提供了丰富的内置函数,这些函数可以帮助我们更高效地处理数据。本文将介绍 HiveQL 中一些常用的内置函数,并通过实际案例展示它们的应用。

1. 字符串函数

字符串函数用于处理和操作字符串数据。以下是一些常用的字符串函数:

1.1 CONCAT

CONCAT 函数用于将多个字符串连接在一起。

sql
SELECT CONCAT('Hello', ' ', 'World');

输出:

Hello World

1.2 SUBSTR

SUBSTR 函数用于从字符串中提取子字符串。

sql
SELECT SUBSTR('Hello World', 7, 5);

输出:

World

1.3 LOWERUPPER

LOWER 函数将字符串转换为小写,UPPER 函数将字符串转换为大写。

sql
SELECT LOWER('Hello World'), UPPER('Hello World');

输出:

hello world   HELLO WORLD

2. 数学函数

数学函数用于执行各种数学运算。以下是一些常用的数学函数:

2.1 ROUND

ROUND 函数用于将数字四舍五入到指定的小数位数。

sql
SELECT ROUND(3.14159, 2);

输出:

3.14

2.2 ABS

ABS 函数返回数字的绝对值。

sql
SELECT ABS(-10);

输出:

10

2.3 POWER

POWER 函数返回一个数的指定次幂。

sql
SELECT POWER(2, 3);

输出:

8

3. 日期函数

日期函数用于处理日期和时间数据。以下是一些常用的日期函数:

3.1 CURRENT_DATE

CURRENT_DATE 函数返回当前日期。

sql
SELECT CURRENT_DATE();

输出:

2023-10-01

3.2 DATE_ADD

DATE_ADD 函数用于在日期上添加指定的天数。

sql
SELECT DATE_ADD('2023-10-01', 7);

输出:

2023-10-08

3.3 DATEDIFF

DATEDIFF 函数返回两个日期之间的天数差。

sql
SELECT DATEDIFF('2023-10-08', '2023-10-01');

输出:

7

4. 聚合函数

聚合函数用于对一组值执行计算并返回单个值。以下是一些常用的聚合函数:

4.1 COUNT

COUNT 函数返回指定列的行数。

sql
SELECT COUNT(*) FROM employees;

输出:

100

4.2 SUM

SUM 函数返回指定列的总和。

sql
SELECT SUM(salary) FROM employees;

输出:

500000

4.3 AVG

AVG 函数返回指定列的平均值。

sql
SELECT AVG(salary) FROM employees;

输出:

5000

5. 实际案例

假设我们有一个 sales 表,其中包含以下数据:

idproductquantitypricesale_date
1A101002023-10-01
2B52002023-10-02
3A81002023-10-03

5.1 计算总销售额

我们可以使用 SUM 函数计算总销售额。

sql
SELECT SUM(quantity * price) AS total_sales FROM sales;

输出:

3300

5.2 计算每种产品的平均销售额

我们可以使用 AVG 函数计算每种产品的平均销售额。

sql
SELECT product, AVG(quantity * price) AS avg_sales FROM sales GROUP BY product;

输出:

A   900
B 1000

6. 总结

HiveQL 提供了丰富的内置函数,包括字符串、数学、日期和聚合函数,这些函数可以帮助我们更高效地处理和分析数据。通过本文的介绍和实际案例,你应该已经掌握了这些常用函数的基本用法。

7. 附加资源

8. 练习

  1. 使用 CONCAT 函数将 first_namelast_name 列连接成一个完整的名字。
  2. 使用 ROUND 函数将 price 列的值四舍五入到两位小数。
  3. 使用 DATEDIFF 函数计算 sale_date 和当前日期之间的天数差。

通过完成这些练习,你将进一步巩固对 HiveQL 内置函数的理解。