Hive编程(七)【HiveQL:视图】
2017-12-01 12:02
148 查看
视图是一个逻辑结构。不像表会存储真实的数据。目前暂不支持物化视图。
在
删除视图的方式和删除表方式类似
可以使用
视图中不能使用
视图是只读的,只允许修改元数据
7.1 使用视图来降低查询复杂度
假若有如下的嵌套子查询:FROM ( SELECT * FROM people JOIN cart ON (cart.people_id=people.id) WHERE firstname='john' ) a SELECT a.lastname WHERE a.id=3;创建视图
CREATE VIEW shorter_join AS SELECT * FROM people JOIN cart ON (cart.people_id=people.id) WHERE firstname='john';像使用表一样使用视图来查询.
SELECT lastname FROM shorter_join WHERE id=3;
7.2 使用视图来限制基于条件过滤的数据
hive> CREATE TABLE userinfo ( > firstname string, lastname string, ssn string, password string); hive> CREATE VIEW safer_user_info AS > SELECT firstname,lastname FROM userinfo;
hive> CREATE TABLE employee (firstname string, lastname string, > ssn string, password string, department string); hive> CREATE VIEW techops_employee AS > SELECT firstname,lastname,ssn FROM userinfo WERE department='techops';
7.3 动态分区中的视图和map类型
CREATE EXTERNAL TABLE dynamictable(cols map<string,string>) ROW FORMAT DELIMITED FIELDS TERMINATED BY '\004' COLLECTION ITEMS TERMINATED BY '\001' MAP KEYS TERMINATED BY '\002' STORED AS TEXTFILE;
CREATE VIEW orders(state, city, part) AS SELECT cols["state"], cols["city"], cols["part"] FROM dynamictable WHERE cols["type"] = "request";
CREATE VIEW shipments(time, part) AS SELECT cols["time"], cols["parts"] FROM dynamictable WHERE cols["type"] = "response";
7.4 视图零零碎碎相关的事情
创建视图时可以使用IF NOT EXISTS和
COMMENT。如:
CREATE VIEW IF NOT EXISTS shipments(time, part) COMMENT 'Time and parts for shipments.' TBLPROPERTIES ('creator' = 'me') AS SELECT ...;视图的名称不能和表的名称重名。可以为视图中的新列使用
COMMENT写注释,与原表中的列的注释不同。
在
AS SELECT语句中若没有指定别名默认Hive将使用
_CN作为别名。其中
N从0开始。在
AS SELECT语句之前可以使用
TBLPROPERTIES定义表的属性。
CREATE TABLE … LIKE结构同样适用于复制视图。只需要在
LIKE关键字后面跟视图名即可。如:
CREATE TABLE clone_shipments LIKE shipments;同样可以使用
EXTERNAL和
LOCATION。
删除视图的方式和删除表方式类似
DROP VIEW IF EXISTS shipments;使用
SHOW TABLES(没有SHOW VIEWS)语句同样可以查看视图。不能使用
DROP TABLES删除视图。
可以使用
DESCRIBE或
DESCRIBE EXTENDED查看视图的元数据信息,使用
DESCRIBE EXTENDED命令的话在输出信息中
Detailed Table Information部分
tableType的值为
VIRTUAL_VIEW。
视图中不能使用
INSERT或
LOAD语句。
视图是只读的,只允许修改元数据
TBLPROPERTIES中的信息。如:
ALTER VIEW shipments SET TBLPROPERTIES ('created_at' = 'some_timestamp');
相关文章推荐
- Hive编程(四)【HiveQL:数据定义】
- 《HIVE编程指南》简图之第7章HiveQL:视图
- Hive数据仓库--HiveQL视图和索引
- Hive编程(五)【HiveQL:数据操作】
- Hive编程(六)【HiveQL:查询】
- HiveQL:视图
- HiveQL:视图
- Hive数据仓库--HiveQL视图和索引
- Hive编程(八)【HiveQL:索引】
- HiveQL:视图
- @Subselect映射,子查询,视图.
- UIView停靠模式(子视图在父视图的…
- iOS开发系列--视图切换
- Swift - 滚动视图(UIScrollView)的用法
- Android应用性能优化系列视图篇——三大基础布局性能比较
- ASP.NET MVC3 快速入门-第六节 增加一个追加数据的方法和一个追加数据的视图
- Making the View Interactive 视图互动
- sqlserver分区视图中分区列的规则
- IOS开发(98)之非XIB文件的自定义视图
- 1. 自定义视图属性