Hive操作符和函数

参考资料  https://cwiki.apache.org/confluence/display/Hive/LanguageManual+UDF#LanguageManualUDF-HiveOperatorsandUserDefinedFunctions%28UDFs%29

显示显示函数信息

SHOW FUNCTIONS;

DESCRIBE FUNCTION <function_name>;

DESCRIBE FUNCTION EXTENDED <function_name>;

内建操作符

关系运算符

A = B                          返回TRUE或者FALSE,如果有NULL返回FALSE

A <=> B                      如果与 = 类似,支持NULL的判断

A == B                        不支持

A != B 或 A <> B          返回NULL、TRUE或FALSE

A < B、A <= B、A > B、A >=B             返回NULL、TRUE或FALSE

A [NOT] BETWEEN B AND C                  返回NULL、TRUE或FALSE,TRUE包括B和C的值

A IS [NOT] NULL

A [NOT] LIKE B                返回NULL、TRUE或FALSE,”_”通配一个字符,”%”通配任意个字符

A RLIKE B 或者 A REGEXP B                   正则匹配

算数运算符

A + B、A - B、A * B、A / B

A % B          去余数

A & B           位与

A | B            位或

A ^ B           位XOR

~A               位非

逻辑运算符

A and B或 A&&B             返回NULL、TRUE或FALSE,

A OR B 或 A || B             A或B一个为TRUE则返回TRUE,FALSE or NULL 返回NULL,否则返回FALSE

NOT A 或 ! A                  返回NULL、TRUE或FALSE,

A [NOT] IN (Val1, Val2, …)        A是否在(Val1, Val2, …)中

[NOT] EXISTS (subquery)         子查询是否有结果返回,hive0.13开始支持

复杂类型构造(Complex Type Constructors

map       (key1,value1,key2,value2,....)           创建一个map, 感觉map与Python中的字典类似

struct     (val1, val2, val3,...)                         用给定的数据创建一个struct, filed名字为col1,col2,col3...

named_struct  (name1,val1,name2,val2,...)    用给定的filed名字和数据创建  struct

array       (val1, val2,val3,...)                         用给定的数据创建数组

create_union   (tag, val1, val2,...)                 创建一个union, 指向tag

复杂类型操作符  (Operators on Complex Types)

A[n]                A是一个array, 返回array的第n个元素,下标从0开始

M[key]             M是一个map,  返回map的key对应的值

S.x                  S是一个struct,返回struct的filed名字为x的值

内建函数(Built-in Functions)

数学函数

当参数有NULL时,会返回NULL,(PS.此处很坑爹...)

round(DOUBLE a)、round(DOUBLE a, INT d)    四舍五入d位小数,d缺省则返回bigint类型

floor(DOUBLE a)                                 向下取整,舍去小数

ceil(DOUBLE a)、ceiling(DOUBLE a)       向上取整

rand(), rand(INT seed)                        产生一列随机数

exp(DOUBLE a), exp(DECIMAL a)         计算e的a次方

ln(DOUBLE a), ln(DECIMAL a)               计算a的自然对数

log10(DOUBLE a), log10(DECIMAL a), og2(DOUBLE a), log2(DECIMAL a)   计算a的对数,底为10或者2

log(DOUBLE base, DOUBLE a), log(DECIMAL base, DECIMAL a)                 计算a的对数,底为base

pow(DOUBLE a, DOUBLE p), power(DOUBLE a, DOUBLE p)                       计算a的p次方

sqrt(DOUBLE a), sqrt(DECIMAL a)            计算a的平方根

bin(BIGINT a)                                         返回a的二进制数

hex(BIGINT a) hex(STRING a) hex(BINARY a)             返回a的16进制数

unhex(STRING a)                                    返回16进制的反

conv(BIGINT num, INT from_base, INT to_base), conv(STRING num, INT from_base, INT to_base)   将num从from_base转换成to_base

abs(DOUBLE a)                                        返回绝对值

pmod(INT a, INT b), pmod(DOUBLE a, DOUBLE b)          返回a模b的值

sin(DOUBLE a), sin(DECIMAL a)

asin(DOUBLE a), asin(DECIMAL a)

cos(DOUBLE a), cos(DECIMAL a)

acos(DOUBLE a), acos(DECIMAL a)

tan(DOUBLE a), tan(DECIMAL a)

atan(DOUBLE a), atan(DECIMAL a)

degrees(DOUBLE a), degrees(DECIMAL a)             将a从弧度转换为角度

radians(DOUBLE a), radians(DOUBLE a)                将a从角度转换为弧度

positive(INT a), positive(DOUBLE a)                      返回a

negative(INT a), negative(DOUBLE a)                    返回-a

sign(DOUBLE a), sign(DECIMAL a)                        取a的符号,‘1.0‘表示正,‘-1.0‘表示负,否则‘0.0‘

e(), pi()

factorial(INT a)                                                 返回a的因子?在[0..20]之间

cbrt(DOUBLE a)                                                返回立方根

shiftleft(INT a), shiftleft(BIGINT a)

shiftright(INT a), shiftright(BIGINT a)

shiftrightunsigned(INT a), shiftrightunsigned(BIGINT a)

采集函数(Collection Functions)

size(Map<K.V>)                      返回map的元素个数

size(Array<T>)                       返回array的元素个数

map_keys(Map<K.V>)             返回一个数组,元素是map的key

map_values(Map<K.V>)           返回一个数组,元素是map的值

array_contains(Array<T>, value)   Array是否包含,Value

sort_array(Array<T>)               排序

类型转化函数(Type Conversion Functions)

binary(string|binary)

cast(expr as <type>)            将expr的记过转换为type类型,如果转换失败返回NULL,如果type为boolean,非空是返回TRUE

日期函数(Date Functions)

时间: 2024-11-05 02:36:25

Hive操作符和函数的相关文章

hive日期转换函数2

转自大神 http://www.oratea.net/?p=944 无论做什么数据,都离不开日期函数的使用. 这里转载一下Hive的日期函数的使用,写的相当完整. 日期函数UNIX时间戳转日期函数: from_unixtime语法:from_unixtime(bigint unixtime[, string format]) 返回值: string说明: 转化UNIX时间戳(从1970-01-01 00:00:00 UTC到指定时间的秒数)到当前时区的时间格式举例:hive> select fr

在c++ 模板类外写 操作符重载函数,并且是模板类的友元函数

看视频教程说不能在c++ 模板类外写 操作符重载函数,并且是模板类的友元函数 我试了试,可以,放出测试代码: #include <iostream> using namespace std; template<typename T> class A { public: A(T a) { this->a = a; } template<typename T> //加上这句就可以了 friend A<T> operator+(A<T> &

hive分组排序函数 分组取top10

hive分组排序函数 分组取top10 语法:row_number() over( partition by 字段a order by 计算项b desc) rank --这里rank是别名 Partition by:类似hive的建表,分区的意思 这里按字段a分区,对计算项b进行降序排序 实例: 要取top10品牌,各品牌的top10渠道,各品牌的top10渠道中各渠道的top10档期 1) 取top10品牌 Select 品牌,count/sum/其他() as num from tb_na

C++ Primer 学习笔记_62_重载操作符与转换 --调用操作符和函数对象

重载操作符与转换 --调用操作符和函数对象 引言: 能够为类类型的对象重载函数调用操作符:一般为表示操作的类重载调用操作符! struct absInt { int operator() (int val) { return val > 0 ? val : -val; } }; 通过为类类型的对象提供一个实參表而使用调用操作符,所用的方式看起来系那个一个函数调用: absInt absObj; int i = -1; cout << absObj(i) << endl; 虽然

Hive的日期函数

1.unix时间戳转时间函数 语法: from_unixtime(bigint unixtime[, string format]) 返回值: string 说明: 转化UNIX时间戳(从1970-01-01 00:00:00 UTC到指定时间的秒数)到当前时区的时间格式 举例: hive> select from_unixtime(1323308943,'yyyyMMdd') from dual; 20111208 2.获取当前时区的unix时间戳 语法: unix_timestamp() 返

hive 的udf 函数使用

1)依据课程讲解UDF编程案例,完成练习,总结开发UDF步骤,代码贴图,给予注释,重点 2)更改emp 表中名字的大写给为小写. 一:hive 的udf 函数: 1.1 hive UDF 函数概述: 1. hive自带了一些函数比如:max/min 等,但是由于自带的函数数量有限,自己可以定义udf来方便扩展. 2. udf 函数可以直接应用于select 语句,对查询结构做格式化处理之后,然后再输出内容. 1.2 hive 编写udf函数的时候需要注意的地方: 1. 自定义udf函数需要继承o

[Hive_12] Hive 的自定义函数

0. 说明 UDF //user define function //输入单行,输出单行,类似于 format_number(age,'000') UDTF //user define table-gen function    //输入单行,输出多行,类似于 explode(array); UDAF //user define aggr function    //输入多行,输出单行,类似于 sum(xxx) Hive 通过 UDF 实现对 temptags 的解析 1. UDF 1.1 代码

hive的floor函数,ceil函数,round函数

hive的floor函数和ceil函数与python.sql等一致 1. floor函数 select floor(1.4) # 结果是:1 2. ceil函数 select ceil(1.4) #结果是:2 3. hive的round函数与python稍微有点差别 首先说hive的round:直接四舍五入 select round(1.455, 2) #结果是:1.46,即四舍五入到十分位 select round(1.5) #默认四舍五入到个位,结果是:2 select round(255,

Hive 内建操作符与函数开发——深入浅出学Hive

第一部分:关系运算 Hive支持的关系运算符 ?常见的关系运算符 ?等值比较: = ?不等值比较: <> ?小于比较: < ?小于等于比较: <= ?大于比较: > ?大于等于比较: >= ?空值判断: IS NULL ?非空判断: IS NOT NULL ?LIKE比较: LIKE ?JAVA的LIKE操作: RLIKE ?REGEXP操作: REGEXP ?等值比较: = 语法:A=B 操作类型:所有基本类型 描述: 如果表达式A与表达式B相等,则为TRUE:否则为