hive之视图

本文详细介绍了Hive的视图概念,包括视图的作用、创建与管理,以及侧视图的定义、用法和应用场景。视图作为虚拟表,简化了复杂查询,保护数据隐私。侧视图结合表生成函数,可生成新的虚拟表,用于行规范化或解析JSON。

hive之视图

一、视图

  1. 定义:通过隐藏子查询、连接和函数来简化查询的逻辑结构,是虚拟表,从真实表中选取数据;只保存定义,不存储数据, 如果删除或更改基础表,则查询视图将失败,而且视图是只读的,不能插入或装载数据
  2. 应用场景
    1)将指定的数据提供给用户,保护数据隐私
    2)简化查询语句复杂的场景

二、视图表

  1. 创建视图
CREATE VIEW view_name AS SELECT 。。。。; 

ps: 创建视图支持 CTE, ORDER BY, LIMIT, JOIN 等

  1. – 查找视图
 SHOW TABLES; //SHOW VIEWS 在 hive v2.2.0之后
  1. 查看视图定义
SHOW CREATE TABLE view_name;
  1. 删除视图
DROP view_name; 
  1. 更改视图属性
ALTER VIEW view_name SET TBLPROPERTIES ('comment' = 'This is a view');
  1. 更改视图定义
ALTER VIEW view_name AS SELECT statement; 

三、侧视图

  1. 定义
    Lateral View和表生成函数一起使用,表中的每一行和函数输出的每一行进行连接,生成一张新的虚拟表,可以对产生的记录设置字段名称,新加的字段可以使用在sort by,group by等语句中,不需要再套一层子查询。
  2. 建图语句
    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为空也会生成结果
拆分列的个数根据实际情况自行选择

  1. 应用场景
    通常用于规范化行或解析JSON
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值