[TOC] # HIve常用函数 ## 函数分类 ![](https://box.kancloud.cn/1308dfed90fa03e6f392c52a44b3a420_543x360.png) ## HIVE CLI命令 > 显示当前会话有多少函数可用 ~~~ SHOW FUNCTIONS; ~~~ > 显示函数的描述信息 ~~~ DESC FUNCTION concat; ~~~ ![](https://box.kancloud.cn/c2e157036b69df8086241a7eaf59947c_518x79.png) > 显示函数的扩展描述信息 ~~~ DESC FUNCTION EXTENDED concat; ~~~ ## 简单函数 > 函数的计算粒度为单条记录。 * 关系运算 * 数学运算 * 逻辑运算 * 数值计算 * 类型转换 * 日期函数 * 条件函数 * 字符串函数 * 统计函数 * 聚合函数 > 函数处理的数据粒度为多条记录。 * sum()—求和 * count()—求数据量 * avg()—求平均直 * distinct—求不同值数 * min—求最小值 * max—求最人值 ## 集合函数 * 复合类型构建 * 复杂类型访问 * 复杂类型长度 ## 特殊函数 ### 窗口函数 > 应用场景 * 用于分区排序 * 动态Group By * Top N * 累计计算 * 层次查询 * Windowing functions ~~~ lead lag FIRST_VALUE LAST_VALUE ~~~ ### 分析函数 > Analytics functions ~~~ RANK ROW_NUMBER DENSE_RANK CUME_DIST PERCENT_RANK NTILE ~~~ ### 混合函数 ~~~ java_method(class,method [,arg1 [,arg2])reflect(class,method [,arg1 [,arg2..]])hash(a1 [,a2...]) ~~~ ### UDTF ~~~ lateralView: LATERAL VIEW udtf(expression) tableAlias AS columnAlias (‘,‘ columnAlias)* fromClause: FROM baseTable (lateralView)* ~~~ > ateral view用于和split, explode等UDTF一起使用,它能够将一行数据拆成多行数据,在此基础上可以对拆分后的数据进行聚合。lateral view首先为原始表的每行调用UDTF,UTDF会把一行拆分成一或者多行,lateral view再把结果组合,产生一个支持别名表的虚拟表。 ## 常用函数Demo: ~~~ create table employee( id string, money double, type string)row format delimited fields terminated by ‘\t‘ lines terminated by ‘\n‘ stored as textfile;load data local inpath ‘/liguodong/hive/data‘ into table employee;select * from employee; 优先级依次为NOT AND ORselect id,money from employee where (id=‘1001‘ or id=‘1002‘) and money=‘100‘; ~~~