ALTER SHARE

适用于:check marked yes Databricks SQL check marked yes Databricks Runtime 10.3 及更高版本 check marked yes 仅 Unity Catalog

向/从共享添加、修改或删除架构、表、具体化视图或视图。 重命名共享。 将共享的所有权转移到新的主体

所需的权限:

  • 若要更新共享所有者,你必须是以下角色之一:元存储管理员、共享对象的所有者,或者同时拥有 USE SHARESET SHARE PERMISSION 特权的用户。
  • 若要更新共享名称,你必须是元存储管理员(或拥有 CREATE_SHARE 特权的用户)和共享所有者。
  • 若要添加表或视图,您必须是共享对象的所有者、对包含表或视图的架构具有 USE SCHEMA,并且对表或视图具有 SELECT 权限。 必须拥有 SELECT 权限才能共享表或视图。
  • 若要更新任何其他共享属性,你必须是所有者。

语法

ALTER SHARE share_name
  { alter_add_materialized_view |
    REMOVE MATERIALIZED VIEW mat_view_name |
    alter_add_table |
    REMOVE TABLE table_name |
    alter_add_schema |
    REMOVE SCHEMA schema_name |
    alter_add_view |
    REMOVE VIEW view_name |
    alter_add_model |
    REMOVE MODEL model_name |
    RENAME TO to_share_name |
    [ SET ] OWNER TO principal }

alter_add_materialized_view
  { { ALTER | ADD } MATERIALIZED VIEW mat_view_name [ COMMENT comment ] [ AS mat_view_share_name ]

alter_add_table
  { { ALTER | ADD } [ TABLE ] table_name [ COMMENT comment ]
        [ PARTITION clause ] [ AS table_share_name ]
        [ WITH HISTORY | WITHOUT HISTORY ] }

alter_add_schema
  { { ALTER | ADD } SCHEMA schema_name [ COMMENT comment ]

alter_add_view
  { { ALTER | ADD } VIEW view_name [ COMMENT comment ] [ AS view_share_name ]

alter_add_model
  { { ALTER | ADD } VIEW model_name [ COMMENT comment ] [ AS model_share_name ]

注意

check marked yes Databricks Runtime 12.1 及更高版本支持 WITH HISTORY | WITHOUT HISTORY。 Databricks Runtime 版本 11.1 至 12.0 要求指定 WITH CHANGE DATA FEED [ START VERSION version ] ] 而不是 WITH HISTORY

WITH CHANGE DATA FEED 已弃用。

另请注意,如果除了执行按时间顺序查询和流式读取之外,你还希望客户能够使用 table_changes() 函数查询表的更改数据馈送 (CDF),则必须在共享表其 WITH HISTORY (或 WITH CHANGE DATA FEED)之前启用表上的 CDF

参数

  • share_name

    要更改的共享的名称。

  • alter_add_materialized_view

    适用于:check marked yesDatabricks SQL check marked yes Databricks Runtime 13.3 及更高版本

    重要

    此功能以个人预览版提供。 若要试用,请与 Azure Databricks 联系人取得联系。

    将具体化视图添加到共享或修改现有共享具体化视图。 要运行此语句,你必须是共享的所有者且拥有该具体化视图的 SELECT 特权。

    • ADD MATERIALIZED VIEW mat_view_name

      标识要添加的具体化视图。 如果找不到具体化视图,Azure Databricks 会引发 TABLE_OR_VIEW_NOT_FOUND 错误。

    • ALTER MATERIALIZED VIEW mat_view_name

      标识要更改的具体化视图。 如果具体化视图还不是共享的一部分,则 Azure Databricks 会引发错误。

    • COMMENT comment

      附加到具体化视图共享的可选 STRING 文本,作为注释。

    • AS mat_view_share_name

      (可选)以其他名称公开具体化视图。 可以使用架构名称限定该名称。 如果没有指定 mat_view_share_name,则具体化视图会以其自己的名称显示。

      如果共享名称已存在,则 Azure Databricks 会引发错误。

    • REMOVE MATERIALIZED VIEW mat_view_name

      适用于:check marked yesDatabricks SQL check marked yes Databricks Runtime 13.3 及更高版本

      从共享中删除由 mat_view_name 标识的具体化视图。 要运行此语句,你必须是共享的所有者。

    • alter_add_table

      将整张表或其中的一部分添加到共享,或修改现有的共享表。 要运行此语句,你必须是共享的所有者且拥有该表的 SELECT 权限。

      • ADD [ TABLE ] table_name

        标识要添加的表。 表不得位于 Unity Catalog 中。 如果找不到表,Azure Databricks 会引发 TABLE_OR_VIEW_NOT_FOUND 错误。

      • ALTER [ TABLE ] table_name

        标识要修改的表。 如果表还不是共享的一部分,则 Azure Databricks 会出现错误。

      • COMMENT comment

        附加到表的可选 STRING 文本作为注释共享。

      • PARTITION 子句

        要添加的表的一个或多个分区。 分区键必须与表的分区匹配,并且必须与值关联。 如果不存在 PARTITION clause,则 ADD TABLE 会添加整个表。

        若要按对接收者属性的引用进行分区,请使用以下语法:

        PARTITION (column_name = CURRENT_RECIPIENT().<property-key>)
        

        按对接收者属性的引用进行分区 适用于:check marked yes Databricks SQL check marked yes Databricks Runtime 12.2 及更高版本。

      • AS table_share_name

        (可选)以其他名称公开表。 可以使用数据库(架构)名称限定该名称。 如果没有指定 table_share_name,则该表将以其自己的名称显示。

      • WITH HISTORYWITHOUT HISTORY

        适用于:check marked yes Databricks SQL check marked yes Databricks Runtime 12.1 及更高版本。

        当指定 WITH HISTORY 时,共享具有完整历史记录的表,允许接收者执行按时间顺序查看查询。 然后可以使用 VERSION AS OF 和 TIMESTAMP AS OF 引用共享表。

        如果除了执行时间旅行查询和流式读取之外,你还希望客户能够使用 table_changes() 函数查询表的更改数据源 (CDF),则必须在共享表的 WITH HISTORY 之前启用表上的 CDF

        默认行为是 WITHOUT HISTORY

    • REMOVE TABLE table_name

      从共享中删除由 table_name 标识的表。 要运行此语句,你必须是共享的所有者。

    • alter_add_schema

      适用于:check marked yesDatabricks SQL check marked yes Databricks Runtime 13.2 及更高版本

      将架构添加到共享或修改现有共享架构。 要运行此语句,你必须是共享和架构的所有者。

      • ADD SCHEMA schema_name

        标识要添加的架构。 如果找不到架构,Azure Databricks 会引发 SCHEMA_NOT_FOUND 错误。

      • ALTER SCHEMA schema_name

        标识要更改的架构。 如果架构还不是共享的一部分,则 Azure Databricks 会出现错误。

      • COMMENT comment

        作为注释附加到架构共享的可选 STRING 文本。

    • REMOVE SCHEMA schema_name

      从共享中删除由 schema_name 标识的架构。 要运行此语句,你必须是共享的所有者。

    • alter_add_view

      适用于:check marked yesDatabricks SQL check marked yes Databricks Runtime 13.2 及更高版本

      将视图添加到共享或修改现有共享视图。 要运行此语句,你必须是共享的所有者且拥有该视图的 SELECT 权限。

      • ADD VIEW view_name

        标识要添加的视图。 如果找不到视图,Azure Databricks 会引发 TABLE_OR_VIEW_NOT_FOUND 错误。

      • ALTER VIEW view_name

        标识要更改的视图。 如果视图还不是共享的一部分,则 Azure Databricks 会出现错误。

      • COMMENT comment

        附加到视图的可选 STRING 文本作为注释共享。

      • AS view_share_name

        (可选)以其他名称公开视图。 可以使用架构名称限定该名称。 如果没有指定 view_share_name,则视图以其自己的名称显示。

        如果共享名称已存在,则 Azure Databricks 会引发错误。

    • REMOVE VIEW view_name

      从共享中删除由 view_name 标识的视图。 要运行此语句,你必须是共享的所有者。

    • alter_add_model

      适用于:check marked yesDatabricks SQL check marked yes Databricks Runtime 14.0 及更高版本

      将模型添加到共享或修改现有共享模型。 要运行此语句,你必须是共享的所有者且拥有该模型的 EXECUTE 权限。

      • ADD MODEL model_name

        标识要添加的模型。 如果找不到模型,Azure Databricks 将引发 RESOURCE_DOES_NOT_EXIST 错误。

      • ALTER MODEL model_name

        标识要更改的模型。 如果模型还不是共享的一部分,则 Azure Databricks 会引发错误。

      • COMMENT comment

        可选的 STRING 文本作为注释附加到模型共享。

      • AS model_share_name

        (可选)以其他名称公开模型。 可以使用架构名称限定该名称。 如果没有指定 model_share_name,则该模型会以自己的名称显示。

        如果共享名称已存在,则 Azure Databricks 会引发错误。

    • REMOVE MODEL model_name

      从共享中删除由 model_name 标识的模型。 要运行此语句,你必须是共享的所有者。

    • RENAME TO to_share_name

      适用于:check marked yes Databricks SQL check marked yes Databricks Runtime 11.1 及更高版本

      重命名共享。 该名称在元存储中的所有共享中必须是唯一的。 要运行此语句,你必须是共享的所有者且拥有元存储的 CREATE SHARE 权限。

    • [ SET ] OWNER TO principal

      将共享的所有权转移给 principal。 要运行此语句,你必须是共享的所有者。

      适用于:check marked yes Databricks SQL SQL 仓库版本 2022.35 或更高版本 check marked yes Databricks Runtime 11.2 及更高版本

      允许使用 SET 作为可选关键字。

示例

-- Creates a share named `some_share`.
> CREATE SHARE some_share;

-- Add a table to the share.
> ALTER SHARE some_share
     ADD TABLE my_schema.my_tab
         COMMENT 'some comment'
         PARTITION(c1_int = 5, c2_date LIKE '2021%')
         AS shared_schema.shared_tab;

-- Add a schema to the share.
> ALTER SHARE some_share
     ADD SCHEMA some_schema
         COMMENT 'some comment';

-- Add a view to the share.
> ALTER SHARE some_share
     ADD VIEW my_schema.my_view
         COMMENT 'some comment'
         AS shared_schema.shared_view;

-- Add a materialized view to the share.
> ALTER SHARE some_share
     ADD MATERIALIZED VIEW my_schema.my_mat_view
         COMMENT 'some comment'
         AS shared_schema.shared_mat_view;

-- Share a table with history
> ALTER SHARE share ADD TABLE table1 WITH HISTORY;
> ALTER SHARE share ADD TABLE table2 WITHOUT HISTORY;
> SHOW ALL IN SHARE share;
  Name    type   ... history_sharing  ...
  ------ ------ ... ----------------
  Table1  TABLE  ... ENABLED          ...
  Table2  TABLE  ... DISABLED         ...

-- Remove the table again
> ALTER SHARE some_share
    REMOVE TABLE shared_schema.shared_tab;

-- Remove the schema again
> ALTER SHARE some_share
    REMOVE SCHEMA some_schema;

-- Remove a view again
> ALTER SHARE some_share
    REMOVE VIEW shared_schema.shared_view;

-- Rename a share
> ALTER SHARE some_share
    RENAME TO new_share;

-- Change ownership of the share
> ALTER SHARE some_share
    OWNER TO `alf@melmak.et`