创建和管理视图
本文展示了如何在 Unity Catalog 中创建视图。 请参阅什么是视图?。
所需的权限
若要创建视图,请执行以下操作:
- 你必须具有对父目录的
USE CATALOG
权限和对父架构的USE SCHEMA
和CREATE TABLE
权限。 元存储管理员或目录所有者可授予所有这些权限。 架构所有者可授予对架构的USE SCHEMA
和CREATE TABLE
特权。 - 你必须能够读取视图中引用的表和视图(表或视图上的
SELECT
,以及目录上的USE CATALOG
和架构上的USE SCHEMA
)。 - 如果视图引用工作区本地 Hive 元存储中的表,则只能从包含工作区本地表的工作区访问该视图。 因此,Databricks 建议仅从 Unity Catalog 元存储中的表或视图创建视图。
- 创建的视图不能引用已使用 Delta Sharing 与你共享的视图。 请参阅什么是 Delta Sharing?。
若要读取视图,所需权限取决于计算类型、Databricks Runtime 版本和访问模式:
- 对于所有计算资源,必须对视图本身具有
SELECT
权限、对其父目录具有USE CATALOG
权限,而且对父架构具有USE SCHEMA
权限。 这适用于支持 Unity Catalog 的所有计算类型,包括 SQL 仓库、共享访问模式下的群集,以及 Databricks Runtime 15.4 及更高版本的单用户访问模式下的群集。 - 对于 Databricks Runtime 15.3 及更低版本上使用单用户访问模式的计算资源,必须对视图引用的所有表和视图具有
SELECT
权限,此外,还必须对其父目录具有USE CATALOG
权限,对其父架构具有USE SCHEMA
权限。
注意
如果在 Databricks Runtime 15.4 LTS 及更高版本上使用单用户群集,并且想要避免对基础表和视图具有 SELECT
要求,请验证工作区是否已启用无服务器计算。
创建视图
若要创建视图,请运行以下 SQL 命令。 括号中的项是可选的。 替换占位符值替:
<catalog-name>
:目录的名称。<schema-name>
:架构的名称。<view-name>
:视图的名称。<query>
:用于组成视图的查询、列、表和视图。
CREATE VIEW <catalog-name>.<schema-name>.<view-name> AS
SELECT <query>;
例如,要通过 sales_raw
表中的列命名创建名为 sales_redacted
的视图:
CREATE VIEW sales_metastore.sales.sales_redacted AS
SELECT
user_id,
email,
country,
product,
total
FROM sales_metastore.sales.sales_raw;
还可以使用 Databricks Terraform 提供程序和 databricks_table 创建视图。 可以使用 databricks_views 检索视图全名列表。
删除视图
你必须是视图的所有者才能删除视图。 若要删除视图,请运行以下 SQL 命令:
DROP VIEW IF EXISTS catalog_name.schema_name.view_name;