创建和管理视图
本文展示了如何在 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 版本和访问模式:
对于 Databricks Runtime 15.4 及更高版本上的单用户计算资源、共享计算资源和 SQL 仓库,你需要对视图本身具有
SELECT
权限、对其父目录具有USE CATALOG
权限,并对其父架构具有USE SCHEMA
权限。注意
如果在 Databricks Runtime 15.4 LTS 及更高版本上使用单用户计算资源,则还必须验证工作区是否已启用无服务器计算,这可运行支持视图访问的数据筛选功能,而无需访问视图的基础表和视图。 因此,当你使用单用户计算查询视图时,可能需要支付无服务器计算资源的费用。 请参阅单用户计算上的精细访问控制。 使用 Databricks Runtime 15.4 和无服务器计算进行数据筛选的功能目前以公共预览版提供。
对于 Databricks Runtime 15.3 及更低版本上的单用户计算资源,必须对视图引用的所有表和视图具有
SELECT
权限,此外,还必须对其父目录具有USE CATALOG
权限,对其父架构具有USE SCHEMA
权限。
创建视图
若要创建视图,请运行以下 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;