在Data Lake Analytics中使用视图
在Data Lake Analytics中使用視圖
1. 概述
在Data Lake Analytics(以下簡稱DLA)中使用視圖(VIEW)功能,可以大大簡化對于重復SQL,特別是較為復雜的SQL語句的編寫和維護。目前DLA中還不支持SQL視圖的物化。在使用DLA進行跨多個數(shù)據(jù)源的聯(lián)合分析場景中,使用視圖,尤其能夠方便后續(xù)對于包含重復SQL片段的SQL查詢語句的編寫和維護。
在介紹視圖的功能之前,需要注意兩個概念:
1)在DLA中,每個SCHEMA下的表必須屬于同一類數(shù)據(jù)源(通過CATALOG屬性指定),也必須屬于同一個LOCATION約束的數(shù)據(jù)源。
- 對于OSS,SCHEMA中LOCATION指向一個目錄,后續(xù)在該SCHEMA下的表所指向的LOCATION必須從屬于該SCHEMA的LOCATION目錄;
- 對于其他實例型數(shù)據(jù)源(比如Table Store、RDS等),SCHEMA中LOCATION指向一個實例URL,后續(xù)在該SCHEMA下的表必須也屬于該實例。
2)和表類似,視圖必須屬于一個SCHEMA,在SQL中引用視圖時,可以通過“schema_name.view_name”來進行引用,如果當前數(shù)據(jù)庫連接的schema是視圖所屬的SCHEMA時,在SQL中可以直接用視圖名進行引用。
?
2. 創(chuàng)建視圖
語法:
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語句創(chuàng)建視圖。如果指定名稱的視圖之前在系統(tǒng)中已經(jīng)存在,則會報錯提示視圖已經(jīng)存在。通過CREATE OR REPLACE方式,如果指定名稱的視圖之前在系統(tǒng)中已經(jīng)存在,則會進行更新,用新的視圖定義替換之前的視圖定義。
3. 查詢視圖元數(shù)據(jù)
視圖元數(shù)據(jù)相關信息查詢的方式有很多種,下面一一列舉:
- 查詢視圖的創(chuàng)建語句:
語法:
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元數(shù)據(jù):
目前,DLA中不保存視圖定義的詳細列定義元數(shù)據(jù)信息。
4. 嵌套視圖
DLA支持視圖的嵌套,即VIEW 1定義指向VIEW 2,VIEW 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?
原文鏈接
本文為云棲社區(qū)原創(chuàng)內容,未經(jīng)允許不得轉載。
總結
以上是生活随笔為你收集整理的在Data Lake Analytics中使用视图的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 七个不容易被发现的生成对抗网络(GAN)
- 下一篇: 从阿里云数据库入选Gartner谈数据库