hive常用函数一般分为下面几个部分:

算数运算符:+,- ,*, /
关系运算符:== , <>(不等于) , > , >= , < , <=
逻辑运算符:and    or  not数学函数
字符串函数
集合函数
日期函数
条件函数
侧视图
聚合函数
窗口函数
over重句

数学函数

1、取余函数,只能支持正数,参数含义:n%mmod(n,m)  select mod(3,5);+------+| _c0  |+------+| 3    |+------+2、取余函数,正负都支持,如果n为负,m为正,结果为正;n为正,结构为负,结果为负pmod(n,m)select pmod(-3,5);+------+| _c0  |+------+| 2    |+------+
3、随机函数,算是一个伪随机,如果里面的seed是同一个数,那么得到的随机数也是相同的,,基于这个效果,可以用来做秘钥rand(seed)select rand(12345678);+---------------------+|         _c0         |+---------------------+| 0.7005605651027493  |+---------------------+
4、取表达式符号,结果为正返回1,为负返回-1sign(num)select sign(5-6);+-------+|  _c0  |+-------+| -1.0  |+-------+
5、返回数值本身positive(num)
6、返回数值相反数negative(num)
7、将十进制参数转换成二进制数值bin(num10)select bin(16);+--------+|  _c0   |+--------+| 10000  |+--------+
8、进制转换,不同进制相互转换,第一个参数是数值,第二个参数代表第一个参数的进制,第三个参数代表要转成的进制conv(num,from_base,to_base)select conv(16,10,2);+--------+|  _c0   |+--------+| 10000  |+--------+
9、返回参数列表中的最大值greatest(T...ts)select greatest(12,23,43);+------+| _c0  |+------+| 43   |+------+
10、返回参数列表中最小值least(T..ts)select least(12,23,43);+------+| _c0  |+------+| 12   |+------+
11、银行家舍入,当左边的数值是奇数的时候,向上舍入;当左边的值是偶数的时候,向下舍入bround(decimal)select bround(2.5);+------+| _c0  |+------+| 2    |+------+
12、左移一位,就是乘2,左移两位是乘2的平方shiftleft(bigint|int num,int num)select shiftleft(5,1);+------+| _c0  |+------+| 10   |+------+
13、右移一位是除以2shiftright(bigint|int num,int num)select shiftright(10,1);+------+| _c0  |+------+| 5    |+------+

字符串函数

1、拼接函数:支持混合类型的参数拼接concat(int|string|...)select concat(21,'asd',23.15);+-------------+|     _c0     |+-------------+| 21asd23.15  |+-------------+
2、拼接函数:只能同类型拼接,第一个参数是拼接符,没有默认,必须写concat_ws(string sep,string...|array<string>)select concat_ws('**','xc','aad');+----------+|   _c0    |+----------+| xc**aad  |+----------+
3、截取字符串:第一个参数cnt是要截取的字符串,参数pos是从1开始到截止的位置,如果不写参数3就会从pos位置开始截取到最后,包括pos位置上的字符,参数len是要截取的长度,可以省略不写sbustr(string cnt,int pos[,int len])select substr('wangtengfei',3);+------------+|    _c0     |+------------+| ngtengfei  |+------------+select substr('wangtengfei',3,3);+------+| _c0  |+------+| ngt  |+------+
4、寻找字符串首字母出现的位置:参数substr是想要查找的子字符串;参数str是被查找的父字符串;pos是指定从str第几个开始查找,可以省略不写,不写就是默认从第一个开始查找。如果从pos位置开始寻找,找到substr首字母,就返回第一次出现substr首字符出现的位置,如果没找到就返回0;locate(sbustr,str[,pos])select locate('bc','abcdw');+------+| _c0  |+------+| 2    |+------+select locate('bc','abcdw',3);+------+| _c0  |+------+| 0    |+------+
5、查找字符串位置:参数str是要被寻找的父字符串,参数substr是要寻找的子字符串;寻找str中substr首字母出现的位置,没有就返回0instr(str,substr)select instr('abcdw','bc');+------+| _c0  |+------+| 2    |+------+
6、替换字符串:参数str是父字符串,参数substr是要被替换的字符串,rep是要替换成的字符串;将str中的substr替换成repreplace(str,substr,rep)select replace('123abc456','abc','###');+------------+|    _c0     |+------------+| 123###456  |+------------+
7、替换字符串:参数str是父字符串,参数regex是正则规则,参数rep是要替换成的字符串;将str中的满足regex规则的字符串替换成repregexp_replace(str,regex,rep)select regexp_replace('123dad45sda','[a-z]+','@@');+------------+|    _c0     |+------------+| 123@@45@@  |+------------+
8、分割字符串:将字符串str以标点符号作为第一个维度分割,再以空格作为第二个维度分割,将str分割成一个二维数组sentences(str)select sentences('I Love you,w: s ,a');+-----------------------------------+|                _c0                |+-----------------------------------+| [["I","Love","you","w","s","a"]]  |+-----------------------------------+
9、词频统计字符串:参数arr是字符串数组,注意参数的类型,数组里面还有数组,还是字符串类型的;n是连续几个单词做统计,topk是返回最高的几个;对数组单词做一个或连续几个做词频统计,返回最高的topk个ngrams(array<array<string>> arr,int n int topk)select ngrams(array(array('how','are','you'),array('how','old','are','you')),1,2);+----------------------------------------------------+|                        _c0                         |+----------------------------------------------------+| [{"ngram":["how"],"estfrequency":2.0},{"ngram":["you"],"estfrequency":2.0}] |+----------------------------------------------------+
11、词频统计字符串:针对arr中连续size(cnt)个单词的组合以cnt中非null内容匹配统计,按数量倒序排列,将topk个结果返回context(array<array<string>> arr,array<string> cnt,int topk)12、编码转换:将cnt转换成encode编码的内容encode(string cnt,string encode)13、类型转换:将exp转换成type类型的cast(exp as type)select cast(123 as float);+--------+|  _c0   |+--------+| 123.0  |+--------+14、提取字符串:提取json格式字符串指定key的值,参数json是json格式的字符串,path是指定的key,提取想对应的value;;;一次只能解析一项,但是可以多层解析get_json_object(string json,string path)select get_json_object('{"name":"henry","hobbies":["s","a","c"],"address":{"province":"js","city":"nj"}}','$.hobbies');+----------------+|      _c0       |+----------------+| ["s","a","c"]  |+----------------+select get_json_object('{"name":"henry","hobbies":["s","a","c"],"address":{"province":"js","city":"nj"}}','$.hobbies[0]');+------+| _c0  |+------+| s    |+------+
15、提取字符串:提取json格式字符串中指定key的value值;一次可以解析多个,但是只能解析一层json_tuple(string json,string p1,string p2,...)select json_tuple('{"name":"henry","hobbies":["s","a","c"],"address":{"province":"js","city":"nj"}}','name','hobbies','address');+--------+----------------+--------------------------------+|   c0   |       c1       |               c2               |+--------+----------------+--------------------------------+| henry  | ["s","a","c"]  | {"province":"js","city":"nj"}  |+--------+----------------+--------------------------------+
16、匹配字符串:返回的true和false,cnt是否存在于文件filepath中,,filepath是文件路径in_file(string cnt,string filepath)select in_file('KY08','/root/test/clacpy.log');+-------+|  _c0  |+-------+| true  |+-------+
17提取内容:解析rul,根据part提取内容,当part为QUERY时候添加key进行单独键的提取;part可以是:PROTOCOL,HSOT,QUERY,REF,PATH,USERINGFOparse_url(string url,string part[,string key]);18、正则匹配:str是否能满足正则表达式regexstr rlike regexselect '{"name":"henry","age":"23","gender":"male"}' rlike '^.*?"age":"\\d+".*?$';+-------+|  _c0  |+-------+| true  |+-------+
19、提取字符串:根据group_regex匹配str提取第pos个元素regexp_extract(str,group_regex,pos)select regexp_extract('{"name":"henry","age":"23","gender":"male"}','\\{"name":"(.*?)","age":"(.*?)","gender":"(.*?)"\\}',2);+------+| _c0  |+------+| 23   |+------+
20、分割字符串:根据正则表达式regex分割字符串str,支持多字符串分割select(str,regex)select split('aa,bb.cc',',|\\.');+-------------------+|        _c0        |+-------------------+| ["aa","bb","cc"]  |+-------------------+
21、字符串转化成map:将字符串cnt使用能够kvsSep作为键值对之间分隔符kvSep作为键和值的分隔符转化map对象str_to_map(strig cnt,string kvsSep,string kvSep)select str_to_map('name:henry,age:18,gender:male',',',':');+----------------------------------------------+|                     _c0                      |+----------------------------------------------+| {"name":"henry","age":"18","gender":"male"}  |+----------------------------------------------+
22、替换字符串:按照from同位置将str中的内容替换为to的内容translate(str,from,to)select translate('abcdes','bc','23');+---------+|   _c0   |+---------+| a23des  |+---------+
23、字符串加密:非对称加密,不可逆;concat将字符串拼接到一起,可以通过改变前后两个字符串的值,对中间的进行加密md5(concat('salt_pewfix','field','saltusffix'))select md5(concat('salt_prefix','field','saltsuffix'));+-----------------------------------+|                _c0                |+-----------------------------------+| 905568bd1a66800166dc8941c276db12  |+-----------------------------------+
24、字符串加密:将str字符串使用base64加密,简单的对称加密base64(binary(str))select base64(binary('absn'));+-----------+|    _c0    |+-----------+| YWJzbg==  |+-----------+
25、字符串解密:将str字符串使用unbase64解密unbase64(str)select unbase64('YWJzbg==');+-------+|  _c0  |+-------+| absn  |+-------+
26、字符串加密:复杂加密  ,参数2是一个秘钥,解密时候用;'secretKey的长度:16+n*8(n是整除,包括0)base64(aes_encrypt(string cnt,string secreKey))select base64(aes_encrypt('I Love You','kb12202106160890'));+---------------------------+|            _c0            |+---------------------------+| P48HxSlhsjK8/QUrDFvTSg==  |+---------------------------+27、字符串解密:密码加上秘钥才能解密aes_decrypt(unbase64(strAfterEnc),string secondary)select aes_decrypt(unbase64('P48HxSlhsjK8/QUrDFvTSg== '),'kb12202106160890');+-------------+|     _c0     |+-------------+| I Love You  |+-------------+

日期函数

1、返回系统当前日期current_date();select current_date();+-------------+|     _c0     |+-------------+| 2021-06-20  |+-------------+
2、返回系统当前日期的完整格式(精确到毫秒)current_timestamp().select current_timestamp();+--------------------------+|           _c0            |+--------------------------+| 2021-06-20 17:46:42.237  |+--------------------------+
3、返回系统当前时间戳(单位是秒)unix_timestamp()select unix_timestamp();+-------------+|     _c0     |+-------------+| 1624182432  |+-------------+
4、返回时间戳,如果只有参数1,返回参数1对应的完整格式的时间戳,如果有两个参数,返回参数1对应参数2格式的时间戳unix_timestamp(string|date|datetime|timestamp,date_format)select unix_timestamp('2020-5-1 10:11:12.190');+-------------+|     _c0     |+-------------+| 1588327872  |+-------------+select unix_timestamp('2020-5-1 10:11:12.190','yyyy-MM');+-------------+|     _c0     |+-------------+| 1588291200  |+-------------+
5、返回start_date之后第days天的日期,,date可以是字符串,int支持负数date_add( date start_date,int days)   select date_add(current_date(),3);+-------------+|     _c0     |+-------------+| 2021-06-23  |+-------------+
6、返回start_date之后第months月的日期,支持负数add_months(string|date|datetime|timestamp start_date,int months)select add_months(current_date,-1);+-------------+|     _c0     |+-------------+| 2021-05-20  |+-------------+
7、返回两个日期之间的天数差值     可以用上面的date_add,因为支持负数datediff(big_date,small_date)
8、返回时间戳对应的date_format格式字符串信息    date_format可以不写from_unixtime(bigint,date_format)select from_unixtime(12345678923,'yyyy-MM');+----------+|   _c0    |+----------+| 2361-03  |+----------+
9、返回日期对应的date_format格式字符串信息 date_format(string|date|datetime|timestamp, date_format)select date_format('2361-03-21 19:15:23','yyyy/MM');+----------+|   _c0    |+----------+| 2361/03  |+----------+
10、返回日期的年月日to_date(string|datetime|timestamp)select to_date('2361-03-21 19:15:23');+-------------+|     _c0     |+-------------+| 2361-03-21  |+-------------+
11、返回距离指定日期最近的下一个weekDay;weekDay可以是:mo,tu,we,th,fr,sa,sunext_day(string|datetime|timestamp,weekDay)select next_day(current_date(),'mo');+-------------+|     _c0     |+-------------+| 2021-06-21  |+-------------+
12、返回参数日期所属月份的最后一天的日期last_day(string|datetime|timestamp)select last_day(current_date());+-------------+|     _c0     |+-------------+| 2021-06-30  |+-------------+
13、年最后一天select concat(year(current_date()),'-12-31');+-------------+|     _c0     |+-------------+| 2021-12-31  |+-------------+
14、季度最后一天select date_sub(add_months(trunc(current_date(),'Q'),3),1);+-------------+|     _c0     |+-------------+| 2021-06-30  |+-------------+select date_add(add_months(trunc(current_date(),'Q'),3),-1);+-------------+|     _c0     |+-------------+| 2021-06-30  |+-------------+
15、周最后一天select date_sub(next_day(current_date(),'MO'),1);+-------------+|     _c0     |+-------------+| 2021-06-20  |+-------------+
16、返回参数1对应参数2单位的第一天;part : YY=>年  Q=>季度      MM=>月trunc(string|date|datetime|timestamp,part)select trunc(current_date(),'YY');+-------------+|     _c0     |+-------------+| 2021-01-01  |+-------------+17、返回参数日期所属周的第一天(星期一)日期date_add(next_day(date,'MO'),-7)
18、返回两个日期之间的月数差 ,结果带小数months_between(big_date,small_date)select months_between(current_date(),'2021-3-15');+-------------+|     _c0     |+-------------+| 3.16129032  |+-------------+

hive常用函数(一)相关推荐

  1. Hive常用函数大全一览

    Hive常用函数大全一览 1 关系运算 1.1 1.等值比较: = 1.2 2.不等值比较: 1.3 3.小于比较: < 1.4 4.小于等于比较: <= 1.5 5.大于比较: > ...

  2. 最详细的HIve常用函数整理及案例演示

    Hive常用函数 一.测试数据集 1.1 测试数据集: 1.2 结果展示 二.常用函数 2.1 关系运算 2.1.1 常见关系运算符 2.1.2 空值判断 2.1.3 非空判断 2.1.4 LIKE ...

  3. Hive常用函数 - abs

    Hive常用函数 - abs 官方解释 abs(x) - returns the absolute value of x 个人理解 就是返回函数括号内数字的绝对值. 想要获取该数的绝对值的时候就用这个 ...

  4. HIVE 常用函数总结

    HIVE 常用函数总结 hive 函数比较多,之前总是随用随查,今天把常用的函数总结一下,以后方便查阅. 本文主要涉及以下几个大面: 1.Hive函数介绍以及内置函数查看 内容较多,见<Hive ...

  5. Hive常用函数(日期函数,取整函数,字符串操作函数,集合操作函数)

    常用函数 常用日期函数 常用取整函数 常用字符串操作函数 集合操作函数 多维分析 常用日期函数 unix_timestamp:返回当前或指定时间的时间戳 select unix_timestamp() ...

  6. Hive常用函数、列转行与行转列、开窗函数、UDF、UDTF

    Hive函数.开窗函数.UDF.UDTF 1.系统内置函数 2.常用函数 2.1.关系运算 2.2.数值运算 2.3.条件函数 2.4.日期函数 2.5.字符串函数 2.6.Hive求WordCoun ...

  7. hive中如何把13位转化为时间_重要知识点收藏 | Hive常用函数大全

    关系运算 1.等值比较: = 语法:A=B 操作类型:所有基本类型 描述: 如果表达式A与表达式B相等,则为TRUE:否则为FALSE 举例: hive>select 1 from lxw_du ...

  8. hive中如何把13位转化为时间_【hive常用函数一】日期函数

    使用hive进行数据处理的过程种,遇到不少问题,总结之前的一些开发经验,把之前的一些处理技巧mark一下: 使用通用的哑表dual作为测试表用. 1.时间戳转换 日期格式转换时间戳只能精确到秒(即长度 ...

  9. Hive常用函数大全

    目录 第1章 算数运算 1.1 加法: + 1.2 减法: - 1.3 乘法: * 1.4 除法: / 1.5 取余: % 1.6 位与: & 1.7 位或: | 1.8 位异或: ^ 1.9 ...

最新文章

  1. python程序员工作怎样-怎样才能成为一名Python程序员
  2. LSMW批处理使用方法(06)_步骤4、5
  3. scrapy 动态IP、随机UA、验证码
  4. 解决xp登陆域很慢的方法
  5. 跨域获取json电商数据
  6. 软件构造学习笔记-第二周
  7. Java常见面试题之类的加载过程
  8. python 32位软件下载安装_Python32位官方下载-Python(开发环境工具)v3.9.1 x32 官方win版-ucbug软件站...
  9. Perl 模块 Getopt::Std 和 Getopt::Long
  10. localstorage本地存储
  11. 如何让Java文件在虚拟机中运行_深入理解JVM--Java程序如何在虚拟机中运行
  12. mac电脑安装mysql客户端
  13. 已知文件url,批量下载文件
  14. 浙大中控T9100系统在压缩机上的应用
  15. Spring Security的工作原理
  16. 回归的误差服从正态分布吗_线性回归中的正态分布
  17. 更新到PS CC 2019 缩放的时候 按住shift变成不规则缩放了 反而不按住shift是等比例缩放...
  18. 2.4g和5g要不要合并_路由器2.4g和5g双频合一好还是分开好
  19. MTK OTG 功能总结(UVC)
  20. LTE: SRVCC双模单待无线语音呼叫连续性

热门文章

  1. 格雷码转换成二进制c语言程序,格雷码与二进制的转换程序
  2. React Native BLE蓝牙通信
  3. 数据中台数据分析过程梳理
  4. 【Word】获取SCI文献中高清EMF格式图片的方法
  5. android 软键盘的从属关系,Android控件属性大全
  6. ESP32接入小爱同学,实现语音控制
  7. 6月书讯:最受欢迎的SQL入门书重磅升级
  8. 达观杯数据竞赛 -- LR+SVM处理词向量特征
  9. 豌豆荚使用到的开源技术
  10. 以豌豆荚为例,用 Scrapy 爬取分类多级页面