适用于:
Databricks SQL
Databricks Runtime 10.4 LTS 及更高版本
仅 Unity Catalog
向/从共享添加、修改或删除架构、表、具体化视图或视图。 重命名共享。 将共享的所有权转移到新的主体。
所需权限:
- 若要更新共享所有者,你必须是元存储管理员。
- 若要更新共享名称,你必须是具有
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 ]
注意
WITH HISTORY | WITHOUT HISTORY Databricks Runtime 12.2 LTS 及更高版本支持
。 Databricks Runtime 版本 11.1 至 12.0 要求指定 WITH CHANGE DATA FEED [ START VERSION version ] 而不是 WITH HISTORY。 在 Databricks SQL 和 Databricks Runtime 16.2 及更高版本上, WITH HISTORY 是默认值。
WITH CHANGE DATA FEED 已弃用。
另请注意,如果除了进行时态查询和实时读取之外,你还希望客户能够使用 table_changes() 函数查询表的变化数据馈送 (CDF),则必须在共享表之前(或 WITH HISTORY)。
参数
-
要更改的共享的名称。
alter_add_materialized_view适用于:
Databricks SQL
Databricks Runtime 13.3 LTS 及更高版本将具体化视图添加到共享或修改现有共享具体化视图。 要运行此语句,你必须是共享的所有者且拥有该具体化视图的
SELECT特权。ADD MATERIALIZED VIEWmat_view_name标识要添加的具体化视图。 如果找不到具体化视图,Azure Databricks 会引发 TABLE_OR_VIEW_NOT_FOUND 错误。
ALTER MATERIALIZED VIEWmat_view_name标识要更改的具体化视图。 如果具体化视图还不是共享的一部分,则 Azure Databricks 会引发错误。
COMMENT comment附加到具体化视图共享的可选
STRING文本,作为注释。-
(可选)以其他名称公开具体化视图。 可以使用架构名称限定该名称。 如果没有指定
mat_view_share_name,则具体化视图会以其自己的名称显示。如果共享名称已存在,则 Azure Databricks 会引发错误。
REMOVE MATERIALIZED VIEWmat_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。Databricks SQL 和 Databricks Runtime 16.2 及更高版本的默认行为是
WITH HISTORY。 在 Databricks Runtime 16.1 及更低版本中,它是WITHOUT HISTORY。
REMOVE TABLEtable_name从共享中删除由
table_name标识的表。 要运行此语句,你必须是共享的所有者。alter_add_schema适用于:
Databricks SQL
Databricks Runtime 13.3 LTS 及更高版本将架构添加到共享或修改现有共享架构。 要运行此语句,你必须是共享和架构的所有者。
ADD SCHEMAschema_name标识要添加的架构。 如果找不到架构,Azure Databricks 会引发 SCHEMA_NOT_FOUND 错误。
ALTER SCHEMAschema_name标识要更改的架构。 如果架构还不是共享的一部分,则 Azure Databricks 会出现错误。
COMMENT comment作为注释附加到架构共享的可选
STRING文本。
REMOVE SCHEMAschema_name从共享中删除由
schema_name标识的架构。 要运行此语句,你必须是共享的所有者。alter_add_view适用于:
Databricks SQL
Databricks Runtime 13.3 LTS 及更高版本将视图添加到共享或修改现有共享视图。 要运行此语句,你必须是共享的所有者且拥有该视图的
SELECT权限。ADD VIEWview_name标识要添加的视图。 如果找不到视图,Azure Databricks 会引发 TABLE_OR_VIEW_NOT_FOUND 错误。
ALTER VIEWview_name标识要更改的视图。 如果视图还不是共享的一部分,则 Azure Databricks 会出现错误。
COMMENT comment附加到视图的可选
STRING文本作为注释共享。-
(可选)以其他名称公开视图。 可以使用架构名称限定该名称。 如果没有指定
view_share_name,则视图以其自己的名称显示。如果共享名称已存在,则 Azure Databricks 会引发错误。
REMOVE VIEWview_name从共享中删除由
view_name标识的视图。 要运行此语句,你必须是共享的所有者。alter_add_model适用于:
Databricks SQL
Databricks Runtime 14.0 及更高版本将模型添加到共享或修改现有共享模型。 要运行此语句,你必须是共享的所有者且拥有该模型的
EXECUTE权限。ADD MODELmodel_name标识要添加的模型。 如果找不到模型,Azure Databricks 将引发 RESOURCE_DOES_NOT_EXIST 错误。
ALTER MODELmodel_name标识要更改的模型。 如果模型还不是共享的一部分,则 Azure Databricks 会引发错误。
COMMENT comment可选的
STRING文本作为注释附加到模型共享。-
(可选)以其他名称公开模型。 可以使用架构名称限定该名称。 如果没有指定
model_share_name,则该模型会以自己的名称显示。如果共享名称已存在,则 Azure Databricks 会引发错误。
REMOVE MODELmodel_name从共享中删除由
model_name标识的模型。 要运行此语句,你必须是共享的所有者。RENAME TOto_share_name适用于:
Databricks SQL
Databricks Runtime 11.3 LTS 及更高版本重命名共享。 该名称在元存储中的所有共享中必须是唯一的。 若要运行此语句,你必须是共享的所有者且拥有元存储的
CREATE SHARE权限。[ SET ] OWNER TO校长将共享的所有权转移给
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`