Hive的视图和侧视图
Hive的视图
什么是视图
1、通过隐藏子查询、连接和函数来简化查询的逻辑结构
2、虚拟表,从真实表中选取数据
3、只保存定义,不存储数据
4、如果删除或更改基础表,则查询视图将失败
5、视图是只读的,不能插入或装载数据
视图的优点
1、将特定的列提供给用户,保护数据隐私
2、查询语句复杂的场景
视图的语法
视图操作命令:CREATE、SHOW、DROP、ALTER
CREATE VIEW view_name AS SELECT statement; -- 创建视图
-- 创建视图支持 CTE, ORDER BY, LIMIT, JOIN, etc.
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; -- 更改视图定义,
Hive的侧视图
1、常与表生成函数结合使用,将函数的输入和输出连接
2、OUTER关键字:即使output为空也会生成结果
select name,work_place,loc from employee lateral view outer explode(split(null,',')) a as loc;
3、支持多层级
select name,wps,skill,score from employee
lateral view explode(work_place) work_place_single as wps
lateral view explode(skills_score) sks as skill,score;
4、通常用于规范化行或解析JSON
总结
视图
Hive中的试图,仅仅是一个sql语句的快捷方式
hive中的视图只是逻辑视图,没有物化视图
hive的视图,不支持增删改,只支持查询
hive的视图,只有的查询的时候,才会真正执行
侧视图
Lateral View和UDTF类功能函数一起使用,表中的每一行和UDTF函数输出的每一行进行连接,生成一张新的虚拟表,可以对UDTF产生的记录设置字段名称,新加的字段可以使用在sort by,group by等语句中,不需要再套一层子查询。Lateral View的作用是可以扩展原来的表数据。