hive之视图
一、视图
- 定义:通过隐藏子查询、连接和函数来简化查询的逻辑结构,是虚拟表,从真实表中选取数据;只保存定义,不存储数据, 如果删除或更改基础表,则查询视图将失败,而且视图是只读的,不能插入或装载数据
- 应用场景
1)将指定的数据提供给用户,保护数据隐私
2)简化查询语句复杂的场景
二、视图表
- 创建视图
CREATE VIEW view_name AS SELECT 。。。。;
ps: 创建视图支持 CTE, ORDER BY, LIMIT, JOIN 等
- – 查找视图
SHOW TABLES; //SHOW VIEWS 在 hive v2.2.0之后
- 查看视图定义
SHOW CREATE TABLE view_name;
- 删除视图
DROP view_name;
- 更改视图属性
ALTER VIEW view_name SET TBLPROPERTIES ('comment' = 'This is a view');
- 更改视图定义
ALTER VIEW view_name AS SELECT statement;
三、侧视图
- 定义
Lateral View和表生成函数一起使用,表中的每一行和函数输出的每一行进行连接,生成一张新的虚拟表,可以对产生的记录设置字段名称,新加的字段可以使用在sort by,group by等语句中,不需要再套一层子查询。 - 建图语句
1) 单个Lateral View
select name,work_place,loc from employee lateral view outer explode(split(null,',')) a as loc;
// name work_place是原表的字段名
// loc建侧视图新增的列
// a是给原字段取的别名
//explode之后只有一个字段名时,会将拆分的数据归在一列里面
2)多个Lateral View
select name,wps,skill,score from employee
lateral view explode(work_place) work_place as wps
lateral view explode(skills_score) sks as skill,score;//此处就是将数据拆分为两列
ps:建表时需要加outer关键字;创建侧视图时即使output为空也会生成结果
拆分列的个数根据实际情况自行选择
- 应用场景
通常用于规范化行或解析JSON