Hive案例总结:
- 处理日期的两种方式:
- substring(orderdate,1,7) = ‘2017-04’
- year(orderdate) = 2017 and month(orderdate) = 04
不能写windows字句的函数:
- 所有的排名函数
- last_value
- first_value
两种特殊情况
当指定ORDER BY缺少WINDOW子句时,WINDOW规范默认为RANGE BETWEEN UNBOUNDED PRECEDING AND CURRENT ROW。
如果同时缺少ORDER BY和WINDOW子句,则WINDOW规范默认为ROW BETWEENUND UNBOUNDED PRECEDING和UNBOUNDED FOLLOWING。
以下函数在over()里面只能分区和排序,不能自定义窗口大小了,也就是不能再写window字句
排序分析函数 都不能写 例如: Rank, NTile, DenseRank, CumeDist, PercentRank.
Lead 和 Lag不能写
排名函数
RANK() 排序相同时会重复,会跳号
DENSE_RANK() 排序相同时会重复,不会跳号
ROW_NUMBER() 会根据顺序计算
FIRST_VALUE (col,true/false):当前窗口下的第一个值,第二个参数为true,跳过空值
LAST_VALUE (col,true/false):当前窗口下的最后一个值,第二个参数为true,跳过空值
NTILE(n):把有序窗口的行分发到指定数据的组中,各个组有编号,编号从1开始,对于每一行,NTILE返回此行所属的组的编号。注意:n必须为int类型。