HQL常用函数

HQL与SQL中作用相同但用法不同的函数,左侧HQL右侧SQL

NVL(a,b)=IFNULL(a,b)
DATE_FORMAT(‘2010-01-01’,‘yyyy-MM-dd’)=DATE_FORMAT(‘2010-01-01’,’%Y-%m-%d’)
regexp_replace(str,oriStr,desStr)=replace(str,oriStr,desStr)#用desStr替换str中的所有的oriStr。

HQL与SQL中作用与用法相同的函数

CONCAT(str1,str2,…)
CONCAT_WS(separator,str1,str2,…)
DATE_ADD(‘2010-01-01’,5)
DATE_SUB(‘2010-01-01’,5)
DATEDIFF(date1,date2)

HQL独有函数

COLLECT_SET(col)#只接受基本数据类型,它的主要作用是将某字段的值进行去重汇总,产生 array 类型字段,多行变一行。

EXPLODE(col)#将hive表中一列中复杂的array或者map结构拆分成多行,一行变多行。

LATERAL VIEW#侧写
用法:LATERAL VIEW udtf(expression) tableAlias AS columnAlias
解释:用于和 split, explode 等 UDTF 一起使用,它能够将一行数据拆成多行数据,在此基础上可以对拆分后的数据进行聚合。

next_day(‘2019-02-20’,‘MO’)#2019-02-20的下一个周一。

last_day(‘2019-02-10’)#2019-02-10所在月最后一天的日期。

over()#窗口函数,为每条数据开一个窗口,必须跟在聚合函数后面,由窗口函数中的参数指定聚合函数作用的范围,空参表示作用于所有数据。

RANK() #排序相同时会重复,总数不会变。

DENSE_RANK() #排序相同时会重复,总数会减少。

ROW_NUMBER() #排序相同时不会重复,会根据顺序计算。

OVER():指定分析函数工作的数据窗口大小,这个数据窗口大小可能会随着行的变化
而变化。

CURRENT ROW:当前行。

n PRECEDING:往前 n 行数据。

n FOLLOWING:往后 n 行数据。

UNBOUNDED:起点,UNBOUNDED PRECEDING 表示从前面的起点,UNBOUNDED FOLLOWING 表示到后面的终点。

LAG(col,n):往前第 n 行数据。

LEAD(col,n):往后第 n 行数据。

NTILE(n):把有序分区中的行分发到指定数据的组中,各个组有编号,编号从 1 开始,对于每一行,NTILE 返回此行所属的组的编号。注意:n 必须为 int 类型。

你可能感兴趣的:(Hive)