Hive 学习(六) Hive之常用内置函数一

岁酱吖の 提交于 2020-05-06 01:15:53

一,引言

二,类型转换函数

三,数学运算函数

  3.1 四舍五入(round())

  3.2 向上取整(ceil())

  3.3 向下取整(floor())

  3.4 取绝对值(abs())

  3.5 求单行数据最小值(least())

  3.6 求单行数据最大值(greatest())

四,字符串函数

  4.1 字符串截取(substr)

  4.2 字符串拼接(concat和concat_ws)

  4.3 字符串长度(length)

  4.4 字符串分割(split)

  4.5 大小写转换(upper|lower)

五,时间函数

  5.1 时间获取(current_timestamp)

  5.2 日期获取(current_date)

  5.3 时间戳获取(unix_timestamp)

  5.4 时间转换

 

 

 

 

正文

 

一,引言

  在查询数据的时候,往往需要我们对数据进行清洗和处理,而HSQL提供了很多函数方便我们使用,其实很多函数和普通的SQL是一样的,接下来我们对常用的函数进行分析。

二,类型转换函数

  语法结构:

cast(源数据 as 目标数据类型)
-->注意数据类型必须可以进行相互转换,类似于java的强转

  示例:

-->字符串转换成整型
hive> select cast('1' as int);  
OK
1

三,数学运算函数

  3.1 round()

  功能:四舍五入

  语法结构:

round(源数据,[保留小数的位数])

  示例:

hive> select round(4.3);
OK
4.0
Time taken: 0.142 seconds, Fetched: 1 row(s)
hive> select round(4.5);
OK
5.0
Time taken: 0.09 seconds, Fetched: 1 row(s)
hive> select round(4.523, 2);
OK
4.52

  3.2 ceil()

  功能:向上取整

  语法结构:

ceil(需要取整的数)

  示例:

hive> select ceil(4.52);
OK
5
Time taken: 0.084 seconds, Fetched: 1 row(s)
hive> select ceil(4.2);
OK
5
Time taken: 0.094 seconds, Fetched: 1 row(s)

  3.3 floor()

  功能:向下取整

  语法结构:

floor(需要处理的数据)

  示例:

hive> select floor(3.2);
OK
3
Time taken: 0.092 seconds, Fetched: 1 row(s)
hive> select floor(3.5);
OK
3

  3.4 abs()

  功能:取绝对值

  语法结构:

abs(需要取绝对值得数)

  示例:

hive> select abs(3);
OK
3
Time taken: 0.093 seconds, Fetched: 1 row(s)
hive> select abs(-3);
OK
3

  3.5 least()

  功能:求提供数据的最小值

  语法格式:

least(参数1,参数2,参数3,...)

  示例:

hive> select least(1,2,3);
OK
1

  和min的区别:min是求一组数据的最小值。一般是配合聚合函数使用。而least是单数据的中的一些数据最小值处理。

  3.6 greatest

  功能:求提供数据的最大值

  语法格式:

greatest(参数1,参数2,参数3,...)

  示例:

hive> select greatest(3,4,5);
OK
5
Time taken: 0.075 seconds, Fetched: 1 row(s)
hive>

  和max的区别:max是求一组数据的最大值。一般是配合聚合函数使用。而greatest是单数据的中的一些数据最大值处理。

四,字符串函数

  4.1 substr()

  作用:字符串截取

  语法格式:

substr(string, int start, [int len]) 
-->中括号的参数可写可不写,不写默认截取到末尾

  示例:

hive> select substr('aaa', 1);
OK
aaa
Time taken: 0.098 seconds, Fetched: 1 row(s)
hive> select substr('aaa', 1, 2);
OK
aa

  4.2 concat()和concat_ws()

  功能:字符串拼接

  语法格式:

-->单纯的将提供的参数进行拼接
concat(string A, stringB, ...)

-->字符串之间用一些字符进行拼接
concat_ws(连接字符,string A, string B, ...)

  示例:

hive> select concat('aaa', 'bbb');
OK
aaabbb
Time taken: 0.142 seconds, Fetched: 1 row(s)
hive> select concat_ws('-', 'aaa', 'bbb');
OK
aaa-bbb
Time taken: 0.078 seconds, Fetched: 1 row(s)

  4.3 length()

  功能:求字符串长度

  语法格式:

length(字符串)

  示例:

hive> select length('abcd');
OK
4
Time taken: 0.09 seconds, Fetched: 1 row(s)

  4.4 split()

  功能:字符串切割

  语法格式:

split(字符串, 分割符)

  示例:

hive>select split('a:b:c', ':');
Total MapReduce CPU Time Spent: 2 seconds 960 msec
OK
["a","b","c"]
Time taken: 15.121 seconds, Fetched: 1 row(s)

  注意:对于有些分割符,需要对其进行转义,因为要考虑到正则的问题,如下:

-->这里对·和\都进行了转义
hive> select split('192.168.174.2', '\\.');
Total MapReduce CPU Time Spent: 3 seconds 610 msec
OK
["192","168","174","2"]
Time taken: 13.974 seconds, Fetched: 1 row(s)

  4.5 upper()和lower()

  功能:字符串的大小写切换

  语法结构:

upper(字符串)
lower(字符串)

  示例:

hive> select lower('AA');
OK
aa
Time taken: 0.089 seconds, Fetched: 1 row(s)
hive> select upper('aa');
OK
AA
Time taken: 0.069 seconds, Fetched: 1 row(s)

五,时间函数

  5.1 时间获取

  直接获取当前时间:current_timestamp

hive> select current_timestamp;
OK
2019-05-22 11:22:54.179
Time taken: 0.071 seconds, Fetched: 1 row(s)

  5.2 日期获取

  直接获取当前日期:

hive> select current_date;
OK
2019-05-22
Time taken: 0.076 seconds, Fetched: 1 row(s)

  5.3 时间戳获取

  直接获取当前的时间戳:

hive> select unix_timestamp();
unix_timestamp(void) is deprecated. Use current_timestamp instead.
OK
1558495354
Time taken: 0.08 seconds, Fetched: 1 row(s)

  5.4 时间转换

  unix时间戳转字符串:

hive> select from_unixtime(unix_timestamp());
unix_timestamp(void) is deprecated. Use current_timestamp instead.
OK
2019-05-22 11:25:57
Time taken: 0.069 seconds, Fetched: 1 row(s)

  字符串转时间戳:unix_tmiestamp()

  语法格式:

unix_timestamp(时间字符串, [时间格式])
-->默认的世界格式是 yy-MM-dd HH:mm:ss

  示例:

hive> select unix_timestamp("2017-08-10 17:50:30");
OK
1502358630
Time taken: 0.074 seconds, Fetched: 1 row(s)
hive> select unix_timestamp("2017/08/10 17:50:30","yyyy/MM/dd HH:mm:ss");
OK
1502358630
Time taken: 0.073 seconds, Fetched: 1 row(s)

  将时间字符串转成日期:to_date

hive> select to_date("2017-09-17 16:58:32");
OK
2017-09-17
Time taken: 0.098 seconds, Fetched: 1 row(s)
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!