创建和管理视图
本文展示了如何在 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 目录的所有计算类型,包括 SQL 仓库、共享访问模式下的群集,以及 Databricks Runtime 15.4 及更高版本的单用户访问模式中的群集。 - 对于 Databricks Runtime 15.3 及更低版本使用单用户访问模式的群集,除了对视图的父目录及其父架构之外,
USE CATALOG
还必须具有SELECT
视图引用的所有表和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;