HiveQL查询操作全解(二):常用函数

本篇介绍一下一些常用的HIVE(0.80版本)内置函数:

1、数学函数

返回值类型 样式 描述
BIGINT floor(DOUBLE d) 返回小于等于d的最大整数
BIGINT ceil(DOUBLE d) 返回大于等于d的最小整数
DOUBLE rand(),rand(INT seed) 返回一个DOUBLE型的随机数,seed是随机因子
DOUBLE pow(DOUBLE d,DOUBLE p) 计算d的p次幂
DOUBLE sqrt(DOUBLE d) 计算d的平方根
DOUBLE abs(DOUBLE d) 计算d的绝对值

2、聚合函数

聚合函数是一类比较特殊的函数,可以对多行进行一些计算,然后得到一个结果值,这类函数中最有名的两个例子就是count和avg,分别计算行数和平均值。

hive中常用的聚合函数有:

返回值类型 样式 描述
BIGINT count(*) 计算总行数,包括含有NULL值的行
BIGINT count(expr) 计算提供的expr表达式的值非NULL的行数
BIGINT count(DISTINCT expr) 计算提供的expr表达式的值排重后非NULL的行数
DOUBLE sum(col) 计算制定行的值的和
DOUBLE sum(DISTINCT col) 计算排重后值的和
DOUBLE avg(col) 计算指定行的值的平均值
DOUBLE avg(DISTINCT col) 计算排重后值的平均值
DOUBLE min(col) 计算指定行的最小值
DOUBLE max(col 计算指定行的最大值

3、表生成函数

与聚合函数相反的一类函数就是所谓的表生成函数,其可以将单列扩展为多列或者多行。比如下面的例子可以将一个字符串数组的内容转换成0个或者多个新的记录行。如果subordinates字段内容为空的话,将不会产生新的记录,如果不为空的话,这个数组中的每个元素都将产生一行新纪录。

SELECT explode(subordinates) AS sub FROM employees;

Hive中常用的表生成函数有:

返回值类型 样式 描述
n行结果 explode(ARRAY array) 返回0到多行结果,每行对应输入的array数组中的一个元素
n行结果 explode(MAP map) 返回0到多行结果,每行对应每个map键值对,其中一个字段是map的键,另一个字段对应map的值
数组的类型 explode(ARRAY<TYPE> a) 对于a中的每个元素,explode()会产生一行记录包含这个元素
结果插入表中 Inline(ARRAY<STRUCT[,STRUCT]>) 将结构体数组提取出来并插入到表中
TUPLE json_tuple(STRING jsonStr,p1,p2,...pn) 本函数可以接受多个标签名称,对输入的JSON字符串进行处理,和get_json_object这个UDF类似,不过更高效,其通过一次调用就可以获得多个键值
TUPLE parse_url_tuple(url,partname1,partname2,.....mpartnameN),N>=1 从URL中解析出N个部分信息,其输入参数是URL,以及多个要抽取的部分的名称
N行结果 stack(INT n,col1,....,colM) 把M列转换成N行,每行有M/N个字段,其中n必须是个常数

4、其他内置函数

Hive还提供了许多其他功能强大的内置函数:

返回值类型 样式 描述
STRING concat(STRING s1,STRING s2,.....) 将字符串s1,s2等拼接成一个字符串
STRING concat_ws(STRING separator,STRING s1,STRING s2,...) 将字符串s1,s2等根据指定的分隔符separator拼接起来
INT find_in_set(STRING s,STRING commaSeparatedString) 返回以逗号分隔的字符串中s出现的位置,如果没有找到返回NULL
STRING get_json_object(STRING json_string,STRiNG path) 从给定路径上的JSON字符串中抽取出JSON对象,并返回这个对象的JSON字符串形式,如果输入的JSON字符串是非法的,返回NULL
INT length(STRING s) 计算字符串的长度
STRING lower(STRING s) 将字符串转换为小写形式
STRING regexp_extract(STRING subject,STRING regex_pattern,STRING index) 抽取字符串subject中符合正则表达式regex_pattern的第index个部分的子字符串,index为0表示整个字符串,从1开始表示各个字串
STRING regexp_replace(STRING s,STRING regex,STRING replacement) 按照Java正则表达式regex将字符串s中符合条件的部分替换为replacement所指定的字符串a
STRING reverse(STRING s) 反转字符串
STRING size(MAP/ARRAY) 返回map或者ARRAY中元素的个数
ARRAY<STRING> split(STRING s,STRING pattern) 按照正则表达式pattern分割字符串s,并将分割后的部分以字符串数组方式返回
STRING upper(STRING A) 将字符串中所欲字母转换为大写字母
STRING from_unixtime(BIGINT unixtime[,STRING format]) 将时间戳描述转换成UTC时间,并用字符串表示,可以通过format规定的时间格式,指定输出的时间格式
BIGINT unix_timetime(STRING date) 输入的时间字符串格式必须是yyyy-MM-dd HH:MM:SS,如果不符合则返回0,如果符合则将此时间字符串转换为Unix时间戳。
BIGINT unix_timetime(STRING date,STRING pattern) 将指定时间字符串格式字符串转换为unix时间戳,如果格式不对则返回0
INT datediff(STRING startdate,STRING enddate) 计算开始时间startdate到结束时间enddate相差的天数
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 204,189评论 6 478
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 85,577评论 2 381
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 150,857评论 0 337
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,703评论 1 276
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,705评论 5 366
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,620评论 1 281
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 37,995评论 3 396
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,656评论 0 258
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 40,898评论 1 298
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,639评论 2 321
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,720评论 1 330
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,395评论 4 319
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 38,982评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,953评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,195评论 1 260
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 44,907评论 2 349
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,472评论 2 342

推荐阅读更多精彩内容