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。
CONCAT(str1,str2,…)
CONCAT_WS(separator,str1,str2,…)
DATE_ADD(‘2010-01-01’,5)
DATE_SUB(‘2010-01-01’,5)
DATEDIFF(date1,date2)
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 类型。