前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >使用函数查询(二)

使用函数查询(二)

作者头像
DataScience
发布2019-12-30 11:13:25
6280
发布2019-12-30 11:13:25
举报
文章被收录于专栏:A2DataA2Data

使用函数查询(二)

4.其他内置函数

以下这些函数用于处理字符串、Map、数组和时间戳

返回值类型

样式

描述

STRING

ascii(STRING s)

返回字符串s中首个ASCII字符串的整数值

STRING

base64(BINARY bin)

将二进制bin转换成基于64位的字符串

BINARY

binary(STRING s)binary(BINARY b)

将输入的值转换成二进制值

返回类型就是type定义的类型

cast(<expr> as <type>)

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

STRING

concat(BINARY s1,BINARY s2,...)

将二进制字节码按次序拼接成一个字符串

STRING

concat(STRING s1,STRING s2,...)

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

STRING

concat_ws(STRING separator,STRING s1,STRING s2,...)

和concat类似,不过是使用指定分隔符进行拼接的

STRING

concat_ws(BINARY separator,BINARY s1,STRING s2,...)

和concat类似,不过是使用指定分隔符进行拼接的

ARRAY<STRUCT<STRING,DOUBLE>>

context_ngrams(array<array<string>>,array<string>,int k,int pf)

和ngrams类似,但是从每个外层数组的第二个单词数组来查找前k个字尾

INT

find_in_set(STRING s,STRING commaSepa-rateString)

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

STRING

format_number(NUMBER x,INT d)

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

BOOLEAN

in

例如,test in(val1,val2,...),其表示如果test值等于后面列表中的任一值的话,则返回true

BOOLEAN

in_file(STRING s,STRING filename)

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

INT

instr(STRING str,STRING substr)

查找字符串str中子字符串substr第一次出现的位置

INT

length(STRING s)

计算字符串s的长度

INT

locate(STRING substr,STRING str[,INT pos])

查找在字符串str中的pos位置后字符串substr第一次出现的位置

STRING

lower(STRING s)

将字符串中所有字母转换成小写字母。例如,lower('hIvE')的结果是'hive'

STRING

lcase(STRING s)

和lower( )一样

STRING

lpad(STRING s,INT len,STRING pad)

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

STRING

ltrim(STRING s)

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

STRING

printf(STRING format,Obj ... args)

按照printf风格格式化输出输入的字符串

STRING

regexp_extract(STRING subject,STRING regex_pattern,STRING index)

抽取字符串subject 中符合正则表达式regex_pattern 的第一个index个部分的子字符串

STRING

regexp_replace(STRING s,STRING regex,STRING replacement)

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

STRING

repeat(STRING s,INT n)

重复输出n次字符串s

STRING

reverse(STRING s)

反转字符串

STRING

rpad(STRING s,INT len,STRING pad)

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

STRING

rtrim(STRING s)

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

ARRAY<ARRAY<STRING>>

sentences(STRING s,STRING lang,STRING locale)

将输入字符串s转换成句子数组,每个句子又由一个单词数组构成。参数lang和locale是可选的,如果没有使用的,则使用默认的本地化信息

INT

size(MAP<K,V>)

返回MAP中元素的个数

INT

size(ARRAY<T>)

返回数组ARRAY的元素个数

STRING

space(INT n)

返回n个空格

ARRAY<STRING>

split(STRING s,STRING pattern)

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

MAP<STRING,STRING>

str_to_map(STRING s,STRING delim1,STRING delim2)

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

STRING

substr(STRING s,STRING start_index)substring(STRING s,STRING start_index)

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

STRING

substr(BINARY s,STRING start_index)substring(BINARY s,STRING start_index)

对于二进制字节值s,从start位置开始截取length长度的字符串,作为子字符串

STRING

translate(STRING input,STRING from,STRING to)

STRING

trim(STRING A)

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

STRING

upper(STRING A)ucase(STRING A)

将字符串中所有字母转换成大写字母。例如,upper('hIvE')的结果是'HIVE'

STRING

from_unixtime(BIGINT unixtime[,STRING format])

将时间戳秒数转换成UTC时间,并用字符串表示,可以通过format规定的时间格式,指定输出的时间格式

BIGINT

unix_timestamp( )

获取当前本地时区下的当前时间戳

BIGINT

unix_timestamp(STRING date )

输入的时间字符串格式必须是yyyy-MM-dd HH:mm:ss,如果不符合则返回0,如果符合则将此时间字符串转换成Unix时间戳。例如:unix_timestamp('2009-03-20 11:30:01')=1237573801

BIGINT

unix_timestamp(STRING date, STRING pattern)

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

STRING

to_date(STRING timestamp)

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

INT

year(STRING date)

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

INT

month(STRING date)

返回时间字符串中的月份并使用INT类型表示。例如:month("1970-11-01 00:00:00")=11,month("1970-11-01")=11

INT

day(STRING date)dayyofmonth(STRING date)

返回时间字符串中的天并使用INT类型表示。例如:day("1970-11-01 00:00:00")=1,day("1970-11-01")=1

INT

hour(STRING date)

返回时间戳字符串中的小时并使用INT类型表示。例如:hour('2009-07-30 12:58:59')=12,hour('12:58:59')=12

INT

minute(STRING date)

返回时间字符串中的分钟数

INT

second(STRING date)

返回时间字符串中的秒数

INT

weekofyear(STRING date)

返回时间字符串位于一年中第几个周内,例如:weekofyear("1970-11-01 00:00:00")=44,weekofyear("1970-11-01')=44

INT

datediff(STRING enddate,STRING startdate)

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

STRING

date_add(STRING startdate,INT days)

为开始时间startdate增加days天。例如:date_add('2008-12-31',1)='2009-01-01'

STRING

date_sub(STRING startdate,INT days)

从开始时间startdate中减去days天。例如:date_sub('2008-12-31',1)='2008-12-30'

TIMESTAMP

from_utc_timestamp(TIMESTAMP timestamp,STRING timezone)

如果给定的时间戳并非UTC,则将其转化成指定的时区下的时间戳

TIMESTAMP

to_utc_timestamp(TIMESTAMP timestamp,STRING timezone)

如果给定的时间戳是指定的时区下的时间戳,则将其转化成UTC下的时间戳

需要注意的是,和时间相关的函数输入的是整型或者字符串类型参数。对于Hive v0.8.0版本,这些函数同样接受TIMESTAMP类型参数,同时为了向后兼容,他们还将继续支持之前的整型和字符串类型参数。

爱看书也爱远行

心情在路上

FIND YOURSELF

读很多的随记也写下很多的文字/浅浅淡淡

似乎还能感受到那是的安稳自由惬意和

一种特殊的安静的力量

如果还能出发去遇见更多的未知的人和事

那我一定不辜负世界的温柔

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2018-09-11,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 DataScience 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档