网站设计公司天津,网站开发常用小图片,定制类做网站多少钱,凡客诚品购物在Data Lake Analytics中使用视图
1. 概述
在Data Lake Analytics#xff08;以下简称DLA#xff09;中使用视图#xff08;VIEW#xff09;功能#xff0c;可以大大简化对于重复SQL#xff0c;特别是较为复杂的SQL语句的编写和维护。目前DLA中还不支持SQL视图的物化。…在Data Lake Analytics中使用视图
1. 概述
在Data Lake Analytics以下简称DLA中使用视图VIEW功能可以大大简化对于重复SQL特别是较为复杂的SQL语句的编写和维护。目前DLA中还不支持SQL视图的物化。在使用DLA进行跨多个数据源的联合分析场景中使用视图尤其能够方便后续对于包含重复SQL片段的SQL查询语句的编写和维护。
在介绍视图的功能之前需要注意两个概念 1在DLA中每个SCHEMA下的表必须属于同一类数据源通过CATALOG属性指定也必须属于同一个LOCATION约束的数据源。
对于OSSSCHEMA中LOCATION指向一个目录后续在该SCHEMA下的表所指向的LOCATION必须从属于该SCHEMA的LOCATION目录对于其他实例型数据源比如Table Store、RDS等SCHEMA中LOCATION指向一个实例URL后续在该SCHEMA下的表必须也属于该实例。
2和表类似视图必须属于一个SCHEMA在SQL中引用视图时可以通过“schema_name.view_name”来进行引用如果当前数据库连接的schema是视图所属的SCHEMA时在SQL中可以直接用视图名进行引用。
2. 创建视图
语法
CREATE [OR REPLACE]
VIEW view_name [(column_list)]
AS select_statement
例如
CREATE OR REPLACE
VIEW basic_test.test_view_1_oss
AS
SELECT *
FROM nation
ORDER BY n_nationkey
通过CREATE语句创建视图。如果指定名称的视图之前在系统中已经存在则会报错提示视图已经存在。通过CREATE OR REPLACE方式如果指定名称的视图之前在系统中已经存在则会进行更新用新的视图定义替换之前的视图定义。
3. 查询视图元数据
视图元数据相关信息查询的方式有很多种下面一一列举
查询视图的创建语句
语法
SHOW CREATE (TABLE | VIEW) view_name
例如
SHOW CREATE VIEW basic_test.test_view_1_oss;------------------------------------------------------------------------------------------------------------------------------------------------------
| View | Create View | character_set_client | collation_connection |
------------------------------------------------------------------------------------------------------------------------------------------------------
| test_view_1_oss | CREATE VIEW basic_test.test_view_1_oss AS SELECT *
FROM nation
ORDER BY n_nationkey | utf8 | utf8_general_ci |
------------------------------------------------------------------------------------------------------------------------------------------------------
查询information_schema.views元数据
SELECT * FROM information_schema.views WHERE table_schema basic_test;-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
| TABLE_CATALOG | TABLE_SCHEMA | TABLE_NAME | VIEW_DEFINITION | CHECK_OPTION | IS_UPDATABLE | DEFINER | SECURITY_TYPE | CHARACTER_SET_CLIENT | COLLATION_CONNECTION |
-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
| def | basic_test | test_view_1_oss | SELECT *
FROM nation
ORDER BY n_nationkey | NONE | YES | mysql.syslocalhost | INVOKER | utf8 | utf8_general_ci |
| def | basic_test | test_view_2_oss | SELECT *
FROM nation | NONE | YES | mysql.syslocalhost | INVOKER | utf8 | utf8_general_ci |
-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
目前DLA中不保存视图定义的详细列定义元数据信息。
4. 嵌套视图
DLA支持视图的嵌套即VIEW 1定义指向VIEW 2VIEW 2定义指向VIEW 3。
例如
CREATE OR REPLACE VIEW view_1 (col1, col2, col3) AS
SELECT *
FROM tpch_test.nation
ORDER BY n_nationkey;CREATE OR REPLACE VIEW view_2 (col_1, col_2) AS
SELECT col1, col2 FROM view_1 a;
注意
在定义VIEW时VIEW中指向的SQL语句中建议对引用的table都加上所属的schema名特别是在跨schema的场景下schema1中的定义view指向的SQL语句中目标表有其他schema的table或view。
5. 删除视图
语法
DROP VIEW [IF EXISTS] view_name 原文链接 本文为云栖社区原创内容未经允许不得转载。