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


    一,引言

    二,类型转换函数

    三,数学运算函数

      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)
  • 相关阅读:
    Ubuntu16.04上安装搜狗输入法
    RAM的分类
    解耦技巧——依赖注入!
    傻瓜式学Python3——列表
    Java Builder 模式,你搞懂了么?
    String 源码浅析(一)
    线上CPU100%?看看这篇是怎么排查的!
    生物医学工程SCI期刊投稿(转)
    免费下载文献
    泰山攻略
  • 原文地址:https://www.cnblogs.com/tashanzhishi/p/10903873.html
Copyright © 2020-2023  润新知