教程:在 Unity Catalog 中创建第一个表并授予权限

本文提供了在 Unity Catalog 中创建表和授予权限的快速演练。 它适用于用户,但新负责 Unity Catalog 管理的管理员也可能感兴趣。

要立即开始,可以直接转到本文的第一部分。 要先熟悉基本概念,请参阅什么是 Unity Catalog?

如果你是负责为组织设置和管理 Unity Catalog 的管理员,请参阅设置和管理 Unity Catalog

开始之前的准备工作

要执行本文中所述的任务,必须具有:

  • 为 Unity Catalog 启用的 Azure Databricks 工作区。 请参阅设置和管理 Unity Catalog
  • 访问使用 Unity Catalog 兼容的访问模式的计算。 SQL 仓库符合 Unity Catalog 要求。 要了解符合 Unity Catalog 的群集,请参阅访问模式
  • 对 Unity Catalog 中的某个目录的访问权限。 请参阅确认对目录的访问权限
  • Unity Catalog 对象的相应权限。 每个任务的开头都列出了这些项。
  • 添加到工作区的其他用户和组。 请参阅管理用户、服务主体和组

确认对目录的访问权限

若要运行本文中的教程,你必须对 Unity Catalog 中的某个目录具有 USE CATALOG 特权,并且对该目录中的 default 架构具有 USE SCHEMACREATE TABLE 特权。 目录是 Unity Catalog 中三级命名空间的顶层:catalog.schema.table

若要确定你是否有权访问某个目录,请执行以下操作:

  1. 登录到你的工作区。

  2. 单击 目录图标目录”。

  3. 在左窗格中的“目录”下,查看你有权列出的任何目录。

    如果你看到一个以你的工作区命名的工作区目录,请转到创建你的第一个表并管理权限(对于包括工作区目录的工作区)。 如果你看到一个主目录,请转到创建你的第一个表并管理权限(对于包括主目录的工作区)

    若要确定你是否对任何其他目录具有足够的权限,请单击左窗格中的目录名称以打开详细信息窗格,并打开“权限”选项卡以查看你的权限。 如果在目录上具有 USE CATALOG,并且在目录的默认架构上具有 USE SCHEMACREATE TABLE,可按照创建第一个表并管理权限(对于包含主目录的工作区)教程操作。

如果你对任何目录都没有 USE CATALOG 权限,请要求帐户管理员为你分配该权限。 还需要在目录的 default 架构上具有 USE SCHEMACREATE TABLE

创建你的第一个表并管理权限(对于包括工作区目录的工作区)

如果你的工作区自动启用了 Unity Catalog 并且包括一个以工作区命名的工作区目录,请使用此教程。 请参阅确认对目录的访问权限

Unity Catalog 允许使用 SQL 或 Databricks 资源管理器 UI 以声明方式定义对表的访问。

此示例将运行一个笔记本,该笔记本在工作区目录和 default 架构(数据库)中创建一个名为 department 的表。 自动为已自动为 Unity Catalog 启用的所有工作区创建此目录和架构。

所需权限:对工作区目录的 USE CATALOG 权限,以及对 <workspace-catalog>.default 架构的 USE SCHEMACREATE TABLE 权限。 创建工作区时,会向所有工作区用户授予这些权限。 除了在运行此示例时授予的权限之外,无需其他权限即可完成此示例。

  1. 创建笔记本并将其附加到符合 Unity Catalog 的群集或 SQL 仓库。 请参阅准备工作

    选择 SQL 作为笔记本语言。

  2. 将以下命令添加到笔记本并运行它们(其中 <workspace-catalog> 是你的工作区目录的名称):

    USE CATALOG <workspace-catalog>
    
    CREATE TABLE IF NOT EXISTS default.department
    (
       deptcode   INT,
       deptname  STRING,
       location  STRING
    );
    
    INSERT INTO default.department VALUES
       (10, 'FINANCE', 'EDINBURGH'),
       (20, 'SOFTWARE', 'PADDINGTON');
    

    注意

    如果工作区目录设置为工作区的默认目录,则无需提供完整的三级别命名空间 (<workspace-catalog>.default.department) 或 USE CATALOG <catalog> 语句,因为工作区目录已定义为工作区的默认目录,因此采用了该目录。 每当引用非默认目录的目录时,都必须在语句中指定目录,或使用USE CATALOG <catalog>语句声明该目录。

    Unity Catalog 中现在有一个表。

  3. 在目录资源管理器中找到新表。

    在边栏中单击 “目录”图标“目录”,然后浏览或搜索工作区目录 (<workspace-name>) 和 default 架构,可在其中找到 department

    使用目录资源管理器在工作区目录中查找表

    请注意,无需运行群集或 SQL 仓库即可在目录资源管理器中浏览数据。

  4. 授予对表的权限。

    作为原始的表创建者,你是表的所有者,并可以授予其他用户读取或写入表的权限。 你甚至可以转移所有权,但此处我们不会这样做。

    在目录资源管理器中的表页上,转到“权限”选项卡并单击“授予”。

    在“授予对象”对话框中:

    1. 选择要向其授予权限的用户和组。 此示例使用名为 data-consumers 的组。
    2. 选择要授予的特权。 对于此示例,请分配SELECT(读取)权限并点击“授予”。

    有关 Unity Catalog 特权和权限模型的详细信息,请参阅在 Unity Catalog 中管理特权

    还可以在 Azure Databricks 笔记本或 Databricks SQL 查询编辑器中使用以下 SQL 语句授予这些权限:

    GRANT SELECT ON default.department TO `data-consumers`;
    

创建你的第一个表并管理权限(对于包括主目录的工作区)

如果有权访问 main 目录,请使用此教程。 请参阅确认对目录的访问权限

注意

另外,你还可以将此教程用于你具有以下权限的任何目录:对目录的 USE CATALOG 权限,以及对 default 架构的 USE SCHEMACREATE TABLE 权限。 在下面的示例中,请将 main 替换为你的目录名称。

Unity Catalog 允许使用 SQL 或 Databricks 资源管理器 UI 以声明方式定义对表的访问。

此示例将运行一个笔记本,该笔记本在 main 目录和 default 架构(数据库)中创建一个名为 department 的表。 系统会自动为所有元存储创建此目录和架构。

还可以尝试运行执行相同任务的示例笔记本

所需的权限

此教程还要求对 main 目录具有 USE CATALOG 特权,对 main.default 架构具有 USE SCHEMACREATE TABLE 特权。

默认情况下,所有帐户用户都对 main 具有 USE CATALOG 特权,对 default 具有 USE SCHEMA 特权。 你可能需要要求目录所有者为你授予对默认架构的 CREATE TABLE 特权。 如果你是元存储管理员或目录所有者,则可以在支持 Unity Catalog 的笔记本中使用以下命令向自己或任何用户或组授予 CREATE TABLE 特权:

GRANT CREATE TABLE ON SCHEMA main.default TO `<user or group>`;

教程说明

  1. 创建笔记本并将其附加到支持 Unity Catalog 的群集。 请参阅准备工作

    选择 SQL 作为笔记本语言。

  2. 在笔记本中添加并运行以下命令:

    CREATE TABLE IF NOT EXISTS main.default.department
    (
      deptcode   INT,
      deptname  STRING,
      location  STRING
    );
    
    INSERT INTO main.default.department VALUES
      (10, 'FINANCE', 'EDINBURGH'),
      (20, 'SOFTWARE', 'PADDINGTON');
    

    Unity Catalog 中现在有一个表。

  3. 在目录资源管理器中找到新表。

    在边栏中单击 目录图标“目录”,然后使用浏览器(或通过搜索)找到 main 目录和 default 架构,可在其中找到 department

    使用目录资源管理器查找表

    请注意,无需运行群集或 SQL 仓库即可在目录资源管理器中浏览数据。

  4. 授予对表的权限。

    作为原始的表创建者,你是表的所有者,并可以授予其他用户读取或写入表的权限。 你甚至可以转移所有权,但此处我们不会这样做。

    在目录资源管理器中的表页上,转到“权限”选项卡并单击“授予”。

    在“授予对象”对话框中:

    1. 选择要向其授予权限的用户和组。 此示例使用名为 data-consumers 的组。
    2. 选择要授予的特权。 对于此示例,请分配 SELECT 特权并单击“授予”。

    有关 Unity Catalog 特权和权限模型的详细信息,请参阅在 Unity Catalog 中管理特权

    还可以在 Azure Databricks 笔记本或 Databricks SQL 查询编辑器中使用以下 SQL 语句授予这些权限:

    GRANT SELECT ON main.default.department TO `data-consumers`;
    
  5. 运行后面的示例笔记本之一以获得更详细的演练,其中包括目录和架构创建、可用特权摘要、示例查询等。

示例笔记本:创建第一个目录、架构和表

可以使用以下示例笔记本创建目录、架构和表,并管理对每项的权限。

使用 Python 笔记本创建和管理 Unity Catalog 表

获取笔记本

使用 SQL 笔记本创建和管理 Unity Catalog 表

获取笔记本

后续步骤

了解有关以下方面的详细信息: