标签:函数 语法 result str 字符串 Impala Hello SELECT
Impala常用函数语法
- Impala是基于Hadoop的一种高性能分布式SQL查询引擎,它支持使用SQL语言对大规模数据进行分析和查询
数学函数
函数 |
说明 |
举例 |
ABS(x) |
绝对值函数,返回一个数的绝对值 |
SELECT ABS(-10) AS result; |
CEIL(x) |
向上取整函数,返回大于等于给定数的最小整数 |
SELECT CEIL(3.14) AS result; |
FLOOR(x) |
向下取整函数,返回小于等于给定数的最小整数 |
SELECT FLOOR(3.14) AS result; |
MOD(x,y) |
求余函数,返回两个数相除的余数 |
SELECT MOD(10, 3) AS result; |
POW(x,y) |
幂函数,返回一个数x的指定次幂y |
SELECT POW(2, 3) AS result; |
ROUND(x,y) |
四舍五入函数,返回一个数x的指定精度(y位数,可选,默认为0)的近似值 |
SELECT ROUND(3.14159, 2) AS result; |
SQRT(x) |
平方根函数,返回一个数的平方根 |
SELECT SQRT(9) AS result; |
LOG(x) |
对数函数,返回一个数的对数 |
SELECT LOG(100) AS result; |
字符串函数
函数 |
说明 |
举例 |
LENGTH(str) |
字符串长度函数,返回一个字符串的长度 |
SELECT LENGTH('Hello') AS result; |
CONCAT(str1,str2,...) |
字符串连接函数,将多个字符串连接成一个字符串 |
SELECT CONCAT('Hello', ' ', 'World') AS result; |
SUBSTRING(str,pos,len) |
子串函数,返回一个字符串的子串,pos是子串的起始位置,len是子串的长度(可选,默认是到字符串末尾) |
SELECT SUBSTRING('Hello World', 7, 5) AS result; |
LOWER(str) |
大写转小写函数,将一个字符串中的大写字母转换为小写字母 |
SELECT LOWER('Hello World') AS result; |
UPPER(str) |
小写转大写函数,将一个字符串中的小写字母转换为大写字母 |
SELECT UPPER('Hello World') AS result; |
REPLACE(str,search_str,replace_str) |
替换函数,将一个字符串中的指定子串替换为另一个子串 |
SELECT REPLACE('Hello World', 'World', 'Impala') AS result; |
TRIM(str) |
去除空格函数,去除一个字符串中的前导和尾随空格 |
SELECT SELECT TRIM(' Hello World ') AS result; |
SPLIT(str,delimiter) |
字符串分割函数,将一个字符串按指定的分隔符分割成多个子串 |
SELECT SPLIT('Hello,World', ',')[0] AS result; |
日期和时间函数
函数 |
说明 |
举例 |
CURRENT_DATE() |
当前日期函数,返回当前的日期 |
SELECT CURRENT_DATE() AS result; |
CURRENT_TIMESTAMP() |
当前时间函数,返回当前的日期和时间 |
SELECT CURRENT_TIMESTAMP() AS result; |
DATE_FORMAT(date,format) |
日期格式化函数,将一个日期按指定的格式进行格式化 |
SELECT CURRENT_TIMESTAMP() AS result; |
DATE_ADD/DATE_SUB(date,interval unit) |
日期加减函数,将一个日期加上或减去指定的时间间隔 |
SELECT DATE_ADD('2022-01-01', INTERVAL 1 MONTH) AS result; |
DATEDIFF(enddate,startdate) |
日期差函数,返回两个日期之间的天数差 |
SELECT DATEDIFF('2022-01-01', '2021-01-01') AS result; |
UNIX_TIMESTAMP(date) |
日期时间戳函,数将一个日期转换为对应的时间戳 |
SELECT UNIX_TIMESTAMP('2022-01-01') AS result; |
条件判断函数
函数 |
说明 |
举例 |
IF(condition,true_value,flase_value) |
根据指定的条件进行判断,返回指定条件成立时的值 |
SELECT IF(1 > 0, 'true', 'false') AS result; |
CASE函数 |
根据指定的条件进行判断,返回满足条件的分支对应的值 |
SELECT CASE WHEN 1 > 0 THEN 'true' ELSE 'false' END AS result; |
NULL判断函数 |
判断一个值是否为NULL |
SELECT CASE WHEN NULL IS NULL THEN 'true' ELSE 'false' END AS result; |
自定义函数
- Impala还支持自定义函数(User-Defined Functions,简称UDF),允许用户根据自己的需求编写自定义的函数
创建自定义函数
- 创建自定义函数需要编写一个Java或C++程序,并将其编译成动态链接库(DLL)或共享对象
- 以Java为例,首先需要定义一个类,实现Impala的UDF接口,接着编写函数逻辑,即实现UDF接口的evaluate方法
import org.apache.impala.udf.UDF;
public class MyUDF extends UDF {
public String evaluate(String str) {
// 自定义函数逻辑
return str.toUpperCase();
}
}
- 使用Impala提供的UDF编译器将Java代码编译成动态链接库
impala-udf-compiler.sh MyUDF.java
注册自定义函数
- 需要在Impala中执行CREATE FUNCTION语句
CREATE FUNCTION my_udf(STRING) RETURNS STRING
LOCATION '/path/to/my_udf.so' SYMBOL='MyUDF';
使用自定义函数
SELECT my_udf('Hello World') AS result;
标签:函数,
语法,
result,
str,
字符串,
Impala,
Hello,
SELECT
From: https://www.cnblogs.com/shihongpin/p/18453435