ALTER SHARE
适用于: Databricks SQL Databricks Runtime 10.4 LTS 及更高版本 仅 Unity Catalog
向/从共享添加、修改或删除架构、表、具体化视图或视图。 重命名共享。 将共享的所有权转移到新的主体。
所需的权限:
- 若要更新共享所有者,你必须是以下角色之一:元存储管理员、共享对象的所有者,或者同时拥有
USE SHARE
和SET 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 ]
注意
Databricks Runtime 12.2 LTS 及更高版本支持 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。
参数
-
要更改的共享的名称。
alter_add_materialized_view
适用于: Databricks SQL Databricks Runtime 13.3 LTS 及更高版本
重要
此功能以个人预览版提供。 若要试用,请与 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
文本,作为注释。-
(可选)以其他名称公开具体化视图。 可以使用架构名称限定该名称。 如果没有指定
mat_view_share_name
,则具体化视图会以其自己的名称显示。如果共享名称已存在,则 Azure Databricks 会引发错误。
REMOVE MATERIALIZED VIEW
mat_view_name适用于: Databricks SQL Databricks Runtime 13.3 LTS 及更高版本
从共享中删除由
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 clause
,则ADD TABLE
会添加整个表。若要按对接收者属性的引用进行分区,请使用以下语法:
PARTITION (column_name = CURRENT_RECIPIENT().<property-key>)
按对收件人属性的引用进行分区 适用于:Databricks SQL Databricks Runtime 12.2 LTS 及更高版本。
-
(可选)以其他名称公开表。 可以使用数据库(架构)名称限定该名称。 如果没有指定
table_share_name
,则该表将以其自己的名称显示。 WITH HISTORY
或WITHOUT HISTORY
适用于: Databricks SQL Databricks Runtime 12.2 LTS 及更高版本.
当指定
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
适用于: Databricks SQL Databricks Runtime 13.3 LTS 及更高版本
将架构添加到共享或修改现有共享架构。 要运行此语句,你必须是共享和架构的所有者。
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
适用于: Databricks SQL Databricks Runtime 13.3 LTS 及更高版本
将视图添加到共享或修改现有共享视图。 要运行此语句,你必须是共享的所有者且拥有该视图的
SELECT
权限。ADD VIEW
view_name标识要添加的视图。 如果找不到视图,Azure Databricks 会引发 TABLE_OR_VIEW_NOT_FOUND 错误。
ALTER VIEW
view_name标识要更改的视图。 如果视图还不是共享的一部分,则 Azure Databricks 会出现错误。
COMMENT comment
附加到视图的可选
STRING
文本作为注释共享。-
(可选)以其他名称公开视图。 可以使用架构名称限定该名称。 如果没有指定
view_share_name
,则视图以其自己的名称显示。如果共享名称已存在,则 Azure Databricks 会引发错误。
REMOVE VIEW
view_name从共享中删除由
view_name
标识的视图。 要运行此语句,你必须是共享的所有者。alter_add_model
适用于:Databricks SQL Databricks Runtime 14.0 及更高版本
将模型添加到共享或修改现有共享模型。 要运行此语句,你必须是共享的所有者且拥有该模型的
EXECUTE
权限。ADD MODEL
model_name标识要添加的模型。 如果找不到模型,Azure Databricks 将引发 RESOURCE_DOES_NOT_EXIST 错误。
ALTER MODEL
model_name标识要更改的模型。 如果模型还不是共享的一部分,则 Azure Databricks 会引发错误。
COMMENT comment
可选的
STRING
文本作为注释附加到模型共享。-
(可选)以其他名称公开模型。 可以使用架构名称限定该名称。 如果没有指定
model_share_name
,则该模型会以自己的名称显示。如果共享名称已存在,则 Azure Databricks 会引发错误。
REMOVE MODEL
model_name从共享中删除由
model_name
标识的模型。 要运行此语句,你必须是共享的所有者。RENAME TO
to_share_name适用于: Databricks SQL Databricks Runtime 11.3 LTS 及更高版本
重命名共享。 该名称在元存储中的所有共享中必须是唯一的。 要运行此语句,你必须是共享的所有者且拥有元存储的
CREATE SHARE
权限。[ SET ] OWNER TO
principal将共享的所有权转移给
principal
。 要运行此语句,你必须是共享的所有者。适用于: Databricks SQL Databricks Runtime 11.3 LTS 及更高版本
允许使用
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`