创建和管理视图

本文展示了如何在 Unity Catalog 中创建视图。 请参阅什么是视图?

所需的权限

若要创建视图,请执行以下操作:

  • 你必须具有对父目录的 USE CATALOG 权限和对父架构的 USE SCHEMACREATE TABLE 权限。 元存储管理员或目录所有者可授予所有这些权限。 架构所有者可授予对架构的 USE SCHEMACREATE 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;