在DataLakeAnalytics中使用檢視
在Data Lake Analytics中使用檢視
1. 概述
在Data Lake Analytics(以下簡稱DLA)中使用檢視(VIEW)功能,可以大大簡化對於重複SQL,特別是較為複雜的SQL語句的編寫和維護。目前DLA中還不支援SQL檢視的物化。在使用DLA進行跨多個資料來源的聯合分析場景中,使用檢視,尤其能夠方便後續對於包含重複SQL片段的SQL查詢語句的編寫和維護。
在介紹檢視的功能之前,需要注意兩個概念:
1)在DLA中,每個SCHEMA(https://help.aliyun.com/document_detail/72005.html)下的表必須屬於同一類資料來源(通過CATALOG屬性指定),也必須屬於同一個LOCATION約束的資料來源。
- 對於OSS,SCHEMA中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.sys@localhost | INVOKER | utf8 | utf8_general_ci |
| def | basic_test | test_view_2_oss | SELECT *
FROM nation | NONE | YES | mysql.sys@localhost | INVOKER | utf8 | utf8_general_ci |
+---------------+--------------+-----------------+-------------------------------------------+--------------+--------------+---------------------+---------------+----------------------+----------------------+
目前,DLA中不儲存檢視定義的詳細列定義後設資料資訊。
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
相關文章
- DataLakeAnalytics中OSSLOCATION的使用說明
- 在檢視中使用會話會話
- 在Linux中,如何檢視磁碟詳細使用情況?Linux
- 在Data Lake Analytics中使用檢視
- 在Linux中,如何檢視系統資源使用情況?Linux
- 在Linux中,如何檢視系統的磁碟使用情況?Linux
- linux:檢視使用中的埠Linux
- laravel在檢視中使用php程式碼LaravelPHP
- 在 Linux 中檢視你的時區Linux
- 在Linux中,如何檢視網路效能?Linux
- 在Linux中,如何檢視linux中記憶體使用率最高的程序?Linux記憶體
- 在Linux中,如何檢視系統日誌?Linux
- 在Linux中,如何檢視開放的埠?Linux
- 教程:使用DataLakeAnalytics讀/寫RDS資料
- 使用DataLakeAnalytics從OSS清洗資料到AnalyticDB
- 教程:如何使用DataLakeAnalytics建立分割槽表
- Linux中如何檢視CPU使用率?Linux
- React Native Debugger在Chrome中檢視network資訊React NativeChrome
- 在Linux系統中如何檢視有哪些組?Linux
- 11 UML中的邏輯檢視、程序檢視、實現檢視、部署檢視
- 在Linux中,如何檢視網路介面的狀態?Linux
- 在Linux中,如何檢視當前日期和時間?Linux
- 在Linux中,如何檢視佔用CPU最多的程序?Linux
- 在Linux中,如何檢視所有正在執行的程序?Linux
- 在Ubuntu中檢視網路路由表的方法Ubuntu路由
- 在Linux中如何檢視檔案的修改日期Linux
- 在django中怎麼檢視建立的資料表Django
- 在C#中使用Halcon開發視覺檢測程式C#視覺
- 在HTML裡遍歷檢視HTML
- 蘋果|技巧:macOS在Finder中檢視資料夾大小?蘋果Mac
- odoo檢視入門學習- tree檢視的使用Odoo
- ASP.NET Core 5.0 MVC中的檢視分類——佈局檢視、啟動檢視、具體檢視、分部檢視ASP.NETMVC
- Mac電腦技巧:檢視macOS中的GPU使用教程MacGPU
- 選擇使用通用檢視(Generic Views)或檢視集(ViewSets)View
- 使用iostat檢視磁碟IOiOS
- 在oracle中監視索引的使用情況Oracle索引
- 22. 使用MySQL之使用檢視MySql
- 在Linux中,如何檢視檔案內容?列出幾種方法。Linux