一.数据分析函数习题回顾:
sql执行顺序:order<select<group by<where<from
分析函数:
1.row_number:排名,值都为唯一,例如:1,2,3,4,5...。
不关心是否有相等情况
2.rank:关心有相等情况,如有相等值,留空位,例如:1,2,2,4,4,6,7,8.....
3.dense_rank:
用于排序,关心相等情况,如遇到相等情况,名次不会留下空位。如1,2,2,3,3,4......
窗口函数:
LAG:函数LAG(col,n,DEFAULT)用于统计窗口内往上第n行值。
第一个参数为列名,第二个参数为往上第n行(可选,默认为1),第三个参数为默认值(当往上第n行为NULL时候,取默认值,如不指定,则为NULL)
LEAD:与LAG作用相反,函数形式如LEAD(col,n,DEFAULT) 用于统计窗口内往下第n行值。第一个参数为列名,第二个参数为往下第n行(可选,默认为1),第三个参数为默认值(当往下第n行为NULL时候,取默认值,如不指定,则为NULL)
- FIRST_VALUE: 取分组内排序后,截止到当前行,第一个值
- LAST_VALUE:与FIRST_VALUE相反,取分组内排序后,截止到当前行,最后一个值
over()从句:
-
- 与标准的聚合函数COUNT、SUM、MIN、MAX、AVG联用,如sum(...) over(...)
- 与区配的分析窗口联用,如ROW_NUMBER() over(...)
- 使用PARTITION BY语句,使用一个或者多个原始数据类型的列
- 使用PARTITION BY与ORDER BY语句,使用一个或者多个数据类型的分区或者排序列
- 使用窗口规范,窗口规范支持以下格式:
-
- ROWS BETWEEN:即为window子句或称窗口子句,属于物理截取,即物理窗口,从行数上控制截取数据的大小多少。
- RANGE BETWEEN: 即为window子句或称窗口子句,属于逻辑截取,即逻辑窗口,从列值上控制窗口的大小多少。
- PRECEDING:window子句之往前
- FOLLOWING:window子句之往后
- CURRENT ROW:window子句之当前行
- UNBOUNDED:window子句之起点,UNBOUNDED PRECEDING 表示从前面的起点,UNBOUNDED FOLLOWING:表示到后面的终点。
-
- 注意:order by子句后边如果没有跟着多大窗口,则默认为range between unbounded preceding and current row
二丶APP热点标签项目
数据开发项目的标准流程
项目背景-需求说明
需求分析
技术方案和排期表
开发细节和风险控制
测试、Bug修复、调优
正式上线-用户可以正式使用
项目总结
主要思路
通过hive命令将数据加载到数据仓库中
使用hql+udf/udaf/udtf完成统计分析
将统计分析结果插入到hive中自建的新表中
主要考点
数据仓库的目录结构和开发规范
hive及hiveSQL常用命令
系统函数+udf/udaf/udtf使用
hive常见问题的解决