1、数据查询

//提高聚合的性能

SET hive.map.aggr=true;

SELECT count(*),avg(salary) FROM employees;

//木匾不允许在一个查询语句中使用多于一个的函数(DISTINCT。。。)表达式

SELECT count(DISTINCT symbol) FROM stocks;

表生成函数:

explode(APPAY array)  返回0到多行结果,每行都对应输入的array数组中的一个元素

explode(ARRAY<TYPE> a)  对于a中的每个元素,explode()会生成一个记录包含这个元素

explode(ARRAY<TYPE> a)  对于a中的每个元素,explode()会生成一行记录包含这个元素

inline(ARRAY<STRUCT[,STRUCT]>)  将结构体数组提取出来并插入到表中

json_tuple(STRING jsonStr,p1,p2,..,pn)  对输入的JSON字符串进行处理,合格get_json_object这个UDF类似,不过更高效,其通过一次调用就可以获取多个键值。

parse_url_tuple(url,partname1,partname2,..,partNameN)  其中N>=1,从URL中解析出N个部分信息。其输入参数是:URL,以及多个要抽取的部分的名称。部分名称是大小写敏感的,而且不应该包含有空格:HOST,PATH,QUERY,REF,PROTOCOL,AUTHORITY,FILE,USERINFO,QUERY:<KEY_NAME>

其他内置函数:

ascii(STRING s)  返回字符串s中首个ASCII字符的整数值

base64(BINARY bin)  将二进制值bin转换成基于64位的字符串

cast(<expr> as <type>)  将expr转换成type类型的。例如:cast('1' as BIGINT)将会将字符串'1'转换成BIGINT数值类型。如果转换失败,则返回NULL

concat(BINARY s1,BINARY s2,..)  将二进制字节码按次序拼接成一个字符串

concat(STRING s1,STRING s2,..)  将字符串s1,s2等拼接成一个字符串。例如:concat('ab','cd')的结果是'abcd'

concat)ws(STRING separator,STRING s1,STRING s2,...)  和concat类似,不过是使用指定的分隔符进行拼接.

decode(BINARY bin,STRING charset)  使用指定的字符集charset将二进制值bin解码成字符串(支持的字符集有:'UTF-16')。如果任一输入参数为NULL,则结果返回NULL

encode(STRING src,STRING charset)  使用指定的字符集charset将字符串src编码成二进制值(支持的字符集有:'US-ASCII','ISO-8859-1','UTF-8',UTF-16BE','UTF-16LE','UTF-16')),如果任一输入参数为NULL,则结果为NULL

find_in_set(STRING s,STRING commaSeparatedString)  返回在以逗号分隔的字符串中s出现的位置,如果没有找到则返回NULL

format_number(NUMBER X,INT d)  将数值x转换成'#,###,###,##'格式字符串,并博保留d位小数。如果d为0,那么输出值就没有小数点后面的值。

get_json_object(STRING json_string,STRING path)  从给定路径上的JSON字符串中抽取JSON对象,并返回这个对象的JSON字符串形式。如果输入的JSON字符串是非法的,则返回NULL

in_file(STRING s,STRING filename)  如果文件名为filename的文件中有完整一行数据和字符串s完全匹配的话,则返回true

instr(STRING str,STRING substr)  查找字符串str中子字符串substr第一次出现的位置

length(STRING s)  计算字符串s的长度

locate(STRING substr,STRING  [,INT pos])  查找在字符串str中的pos位置后字符串substr第一次出现的位置

lpad(STRING s,INT len,STRING pad)  从左边开始对字符串s使用字符串pad进行填充,最终达到len长度为止。如果字符串s本身长度比len大的话,那么多余的部分被去除掉。

rpad(STRING s,INT len,STRING pad)  从右边开始对字符串s......

ltrim(STRING s)  将字符串s前面出现的空格全部去除掉。例如trim(' hive ')的结果是'hive '

regexp_replace(STRING s,STRING regex,STRING replacement) 按照JAVA正则表达式regex将字符串s中符合条件的部分替换成replacement所指定的字符串a.如果replacement部分是空的话,那么符合正则的部门就会背去除掉。例如regexp_replace('hive','[ie]','z')的 结果是'hzvz'

repeat(STRING s,INT n)  重复输出n次字符串s

reverse(STRING s)  反转字符串

rtrim(STRING s)  将字符串s后面出现的空格全部去除掉。例如trim('hive')的结果是'hive'

split(STRING s,STRING pattern)  按照正则表达式pattern分隔字符串s,并将分割后的部分以字符串数组的方式返回。

str_to_map(STRING s,STRING delim1,STRING delim2)  将字符串s按照按指定分隔符转换成map,第一个参数是输入的字符串,第二个参数是键值对之间的分隔符,第三个分隔符是键和值之间的分隔符

substr(STRING s,STRING start_index)  对于字符串s,从start位置开始截取length长度的字符串,作为字符串。例如:substr('abcdefgh',3,2)的结果是'cd'

unix_timestamp(STRING date,STRING pattern)  将指定时间字符串格式字符串转换成Unix时间戳,如果格式不对则返回0,例如unix_timestamp('2009-03-20','yyyy-MM-dd')=1237532400

to_date(STRING timestamp)  返回时间字符串的日期部分,例如:to_date("1970-01-01 00:00:00")="1970-01-01"

year(STRING date)  返回时间字符串中的年份并使用INT类型表示。例如:year("1970-01-01") = 1970

month....day...hour...minute...second...weekofyear同理

datediff(STRING enddate,STRING startdate)  计算开始时间startdata到结束时间enddata相差的天数。例如:datediff('2009-03-01','2009-02-27')=2

date_add(STRING startdate,INT days)  为开始时间startdata增加days天,例如data_sub('2008-12-31',1)='2008-12-30'

谓词操作符

A<=>B   如果A和B都为NULL则返回TRUE,其他的和等号(=)操作符的结果一致,如果任一为NULL则结果为NULL

A<>B,A!=B  A或者B为NULL则返回NULL,如果A不等于B则返回TRUE,反之返回FALSE

A[NOT] BETWEEN B AND C  如果A的值大于或等于B而且小于或等于C,则结果为TRUE

A[NOT] like B  B是一个SQL下的简单正则表达式

A RLIKE B,A REGEXP B  B是一个正则表达式,如果A与其相匹配,则返回TRUE。

参考文献:《Hive编程指南》

hiveql函数笔记(二)相关推荐

  1. HiveQL学习笔记(二):Hive基础语法与常用函数

    本系列是本人对Hive的学习进行一个整理,主要包括以下内容: 1.HiveQL学习笔记(一):Hive安装及Hadoop,Hive原理简介 2.HiveQL学习笔记(二):Hive基础语法与常用函数 ...

  2. ES6学习笔记二arrow functions 箭头函数、template string、destructuring

    接着上一篇的说. arrow functions 箭头函数 => 更便捷的函数声明 document.getElementById("click_1").onclick = ...

  3. HiveQL学习笔记(四):Hive窗口函数

    本系列是本人对Hive的学习进行一个整理,主要包括以下内容: 1.HiveQL学习笔记(一):Hive安装及Hadoop,Hive原理简介 2.HiveQL学习笔记(二):Hive基础语法与常用函数 ...

  4. HiveQL学习笔记(五):Hive练习题

    本系列是本人对Hive的学习进行一个整理,主要包括以下内容: 1.HiveQL学习笔记(一):Hive安装及Hadoop,Hive原理简介 2.HiveQL学习笔记(二):Hive基础语法与常用函数 ...

  5. HiveQL学习笔记(三):Hive表连接

    本系列是本人对Hive的学习进行一个整理,主要包括以下内容: 1.HiveQL学习笔记(一):Hive安装及Hadoop,Hive原理简介 2.HiveQL学习笔记(二):Hive基础语法与常用函数 ...

  6. HiveQL学习笔记(一):Hive安装及Hadoop,Hive原理简介

    本系列是本人对Hive的学习进行一个整理,主要包括以下内容: 1.HiveQL学习笔记(一):Hive安装及Hadoop,Hive原理简介 2.HiveQL学习笔记(二):Hive基础语法与常用函数 ...

  7. 【Visual C++】游戏开发笔记二十七 Direct3D 11入门级知识介绍

    游戏开发笔记二十七 Direct3D 11入门级知识介绍 作者:毛星云    邮箱: happylifemxy@163.com    期待着与志同道合的朋友们相互交流 上一节里我们介绍了在迈入Dire ...

  8. PyTorch学习笔记(二)——回归

    PyTorch学习笔记(二)--回归 本文主要是用PyTorch来实现一个简单的回归任务. 编辑器:spyder 1.引入相应的包及生成伪数据 import torch import torch.nn ...

  9. tensorflow学习笔记二——建立一个简单的神经网络拟合二次函数

    tensorflow学习笔记二--建立一个简单的神经网络 2016-09-23 16:04 2973人阅读 评论(2) 收藏 举报  分类: tensorflow(4)  目录(?)[+] 本笔记目的 ...

最新文章

  1. Docker 常用命令 (持续更新)
  2. 利用fputc函数写一个putw(w,fp)函数,将整数w写入fp所指文件中; 利用fgetc函数写一函数getw(fp)从所指文件读出一整数
  3. mysql 建表代码
  4. Educational Codeforces Round 73 (Rated for Div. 2) E. Game With String 思维博弈 好题(2500)
  5. 构建企业数字化转型协同力有多难?青云发布workly.ai誓要解决这些棘手的问题!...
  6. java hdu2012素数判定
  7. 南海区行政审批管理系统接口规范v0.3(规划) 5.投资项目联合审批系统API 5.1.【uploadFile】证件文书附件上传...
  8. 基于C++实现校园卡管理系统
  9. 写给准备用mcafee8.5i企业版的朋友
  10. Linux系列教程——Linux文件编辑、Linux用户管理
  11. C语言将raw转为bmp,Raw格式转换为Bmp格式
  12. Word文档转PDF
  13. ctrl键频繁失灵,但不是键盘本身的问题,换个键盘同样失灵
  14. 【2019-CS224n】Assignment1
  15. MPU6050介绍及姿态解算
  16. 【HTTP】如何避免OPTIONS请求?
  17. 网站怎么制作?如何简单制作网站
  18. vb.net程序可以在触摸屏上运行么_普洛菲斯触摸屏3501-T1-AF-PP主板维修后蜂鸣器声音...
  19. 管理系统-------SPU
  20. 祝贺小牛队得NBA总冠军

热门文章

  1. Java——File类
  2. c++ STL 全排列
  3. Ubuntu下各种服务搭建及操作技巧
  4. 进程间通信(匿名管道)
  5. 操作系统(一)计算机系统概述
  6. 数据结构(五)层次遍历
  7. linux网络编程(三)select、poll和epoll
  8. C++ STL之Set
  9. 09-排序1 排序 (25 分)
  10. 父、子页面之间页面元素的获取,方法的调用