在Data Lake Analytics中使用视图

简介: 在Data Lake Analytics中使用视图 1. 概述 在Data Lake Analytics(以下简称DLA)中使用视图(VIEW)功能,可以大大简化对于重复SQL,特别是较为复杂的SQL语句的编写和维护。

在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
相关实践学习
借助OSS搭建在线教育视频课程分享网站
本教程介绍如何基于云服务器ECS和对象存储OSS,搭建一个在线教育视频课程分享网站。
目录
相关文章
|
1月前
|
存储 数据采集 大数据
Data Lake架构揭秘
Data Lake架构揭秘
33 0
|
11月前
|
存储 数据可视化 数据挖掘
CRAN任务视图: Sports Analytics
CRAN任务视图: Sports Analytics
97 0
|
11月前
|
存储 SQL JSON
【数据湖】在 Azure Data Lake Storage gen2 上构建数据湖
【数据湖】在 Azure Data Lake Storage gen2 上构建数据湖
|
SQL 分布式计算 对象存储
Data Lake Analytics: 自动推断 OSS 上的 CSV 文件
截止目前,Data Lake Analytics(下面简称 DLA)已经和 OSS 有很多深度的集成,详情可以参见 DLA 的官方文档:DLA 和 OSS 整合。 为了能够提供更好的使用体验,目前可以通过 DLA 自动探测 OSS 上的多种文件格式,并自动生成建表语句,大大减少建表的使用成本。
Data Lake Analytics: 自动推断 OSS 上的 CSV 文件
|
前端开发 数据库
统一数据模型(Universal Data Model)系列一
# 引言 > > 当我们开始一个新的业务应用设计开发呢,无论是前台应用还是中后台应用,在前后端分离的团队组织划分及协作时,前台应用专注于交互体验的提升,涉及到多端(PC,H5,iOS,Android,小程序 - 支付宝,淘宝,微信...),大量的创新在于如何同一个页面开发复用提效统一输出到各端,定义DSL,结合可视化搭建,no code/low code进行页面开发;同时应对各端所需求数据的
3971 1
|
SQL 对象存储
Data Lake Analytics: 基于OSS文件自动推断建表
背景 用户在使用Data Lake Analytics对OSS上的数据建表时,需要预先知道目标文件的格式和schema信息。当目标文件中每条记录对应的列数很多时,需要一个个手动匹配,很不方便。 在新版的Data Lake Analytics中,支持了CREATE EXTERNAL TABLE LIKE 的语法。
1106 0
|
SQL 关系型数据库 数据库
阿里云Data Lake Analytics正式商业化
产品介绍: Data Lake Analytics是Serverless化的交互式联邦查询服务。无需ETL,使用标准SQL即可分析与集成对象存储(OSS)、数据库(PostgreSQL/MySQL等)、NoSQL(TableStore等)数据源的数据适用客户: 全网发布功能: 阿里云Data Lake Analytics正式商业化,无需ETL即可开启异构数据源的联邦实时分析能力。
|
SQL 关系型数据库 测试技术
Data Lake Analytics: 读/写PolarDB的数据
Data Lake Analytics 作为云上数据处理的枢纽,最近加入了对于PolarDB的支持, PolarDB 是阿里云自研的下一代关系型分布式云原生数据库,100%兼容MySQL,存储容量最高可达 100T,性能最高提升至 MySQL 的 6 倍。
2493 0
|
SQL NoSQL 关系型数据库
教程:使用Data Lake Analytics读/写MongoDB数据
Data Lake Analytics 作为云上数据处理的枢纽,最近加入了对于MongoDB 的支持, 这篇教程带你玩转 DLA 的 MongoDB 支持。 创建数据库 在 DLA 里面创建一个底层映射到 MongoDB 的外表的语法如下: CREATE DATABASE `mongo_test`.
2823 0
教程:使用Data Lake Analytics读/写MongoDB数据