ALTER SCHEMA

适用于:选中标记为“是”Databricks SQL 勾选“是” Databricks Runtime

更改架构的所有者、更改架构的托管存储位置、设置 预测优化 行为、通过设置 DBPROPERTIES更改与架构关联的元数据,或设置已删除托管表的恢复期。 指定的属性值将替代具有相同属性名的任何现有值。

虽然使用 SCHEMADATABASE 是可互换的,但最好使用 SCHEMA

语法

ALTER SCHEMA schema_name
    { DEFAULT COLLATION default_collation_name |
      SET DBPROPERTIES ( { key = val } [, ...] ) |
      [ SET ] OWNER TO principal
      SET TAGS ( { tag_name = tag_value } [, ...] ) |
      UNSET TAGS ( tag_name [, ...] ) |
      { ENABLE | DISABLE | INHERIT } PREDICTIVE OPTIMIZATION |
      SET MANAGED LOCATION location |
      [ SET ] RETAIN DROPPED TO number { HOUR | HOURS | DAY | DAYS | WEEK | WEEKS } }

参数

  • schema_name

    要更改的架构的名称。 如果找不到架构,Azure Databricks将引发 SCHEMA_NOT_FOUND 错误。

  • DEFAULT COLLATION default_collation_name

    适用于:检查标记为“是”的 Databricks SQL 检查标记为“是”是 Databricks Runtime 17.1 及更高版本

    更改架构中定义的新对象的默认排序规则。 架构中现有对象的默认排序规则不会更改。

  • DBPROPERTIES (键 = val [, ...] )

    要设置或取消设置的架构属性。

  • [ SET ] OWNER TO 主体

    将架构的所有权转移给 principal

    适用于:选中标记为“是”Databricks SQL 勾选“是” Databricks Runtime 11.3 LTS 及更高版本

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

  • SET TAGS ( { tag_name = tag_value } [, ...] )

    将标记应用于架构。 需要具有 USE SCHEMA 才能将标记应用于架构。

    适用于:选中标记为“是”Databricks SQL 勾选“是” Databricks Runtime 13.3 LTS 及更高版本

  • 取消设置标记 ( tag_name [, …] )

    从架构中删除标记。 需要具有 USE SCHEMA 才能从架构中删除标记。

    适用于:选中标记为“是”Databricks SQL 勾选“是” Databricks Runtime 13.3 LTS 及更高版本

  • tag_name

    文本 STRINGtag_name 在架构中必须唯一。

  • tag_value

    文本 STRING

  • { 启用 | 禁用 | 继承 } 预测优化

    适用于:勾选“是”Databricks SQL 选中标记为“是” Databricks Runtime 12.2 LTS 及更高版本 勾选“是” 仅 Unity Catalog

    将架构更改为所需的预测优化设置。 默认情况下,创建架构时,行为是从目录 INHERIT。 默认情况下,在架构中创建的新对象将从架构继承该设置。

    如果更改架构,则行为将级联到所有继承预测优化的对象。 显式 ENABLEDISABLE 预测优化的对象不受架构设置影响。

    若要设置架构的预测优化,用户必须对架构具有 CREATE 权限。

    只有非 OpenSharing 中的架构,Unity 目录中的托管目录才有资格进行预测优化。

  • SET 托管位置位置

    适用于:检查标记为“是”的 Databricks SQL 检查标记为“是”是 Databricks Runtime 18.1 及更高 版本检查标记为“是 Unity 目录”

    更改标准架构的托管存储位置。 在架构中创建的新托管表和托管卷使用更新的位置。 Databricks 不会移动现有对象。

    • 位置

      新托管存储位置的云存储路径。 它必须包含在外部位置内。

  • [ SET ] 保留删除到数字 { HOUR |HOURS |DAY |DAYS |WEEK |WEEKS }

    适用于:检查标记为“是” 的 Databricks Runtime 17.3 及更高 版本检查标记为“是 ”,仅限 Unity 目录

    Important

    此功能目前以公共预览版提供。

    设置架构中已删除的托管表的恢复期,在此期间可以使用命令恢复 UNDROP TABLE 已删除的表。 默认值继承自父目录(如果未设置 7 天)。 该值必须为 0 小时(若要禁用恢复),或介于 7-30 天(含)之间。

    将恢复期设置为 0 意味着已删除的表无法使用恢复, UNDROP 数据文件将在 48 小时内从云存储中删除。

    架构级恢复期优先于架构中表的任何目录级设置。 此设置仅适用于配置恢复期后删除的表。 恢复期结束后,托管表的数据文件将在 48 小时内从云存储中删除。

    允许使用 SET 作为可选关键字。 MANAGE需要对架构拥有特权或所有权。 另请参阅 “删除托管表”。

示例

-- Creates a schema named `inventory`.
> CREATE SCHEMA inventory;

-- Alters the schema to set properties `Edited-by` and `Edit-date`.
> ALTER SCHEMA inventory SET DBPROPERTIES ('Edited-by' = 'John', 'Edit-date' = '01/01/2001');

-- Verify that properties are set.
> DESCRIBE SCHEMA EXTENDED inventory;
 database_description_item                 database_description_value
 ------------------------- ------------------------------------------
             Database Name                                  inventory
               Description
                  Location    file:/temp/spark-warehouse/inventory.db
                Properties ((Edit-date,01/01/2001), (Edited-by,John))

-- Transfer ownership of the schema to another user
> ALTER SCHEMA inventory OWNER TO `[email protected]`

-- Applies three tags to the schema named `test`.
> ALTER SCHEMA test SET TAGS ('tag1' = 'val1', 'tag2' = 'val2', 'tag3' = 'val3');

-- Removes three tags from the schema named `test`.
> ALTER SCHEMA test UNSET TAGS ('tag1', 'tag2', 'tag3');

-- Enables predictive optimization for objects in schema my_schema
> ALTER SCHEMA my_schema ENABLE PREDICTIVE OPTIMIZATION;

-- Alter the default collation of a schema
> ALTER SCHEMA my_schema DEFAULT COLLATION UNICODE_CI_AI;

-- Change the managed storage location of a schema
> ALTER SCHEMA my_catalog.my_schema SET MANAGED LOCATION 's3://my-bucket/schemas/my_schema/';

-- Set a 14-day recovery period for dropped managed tables in a schema
> ALTER SCHEMA my_catalog.my_schema RETAIN DROPPED TO 14 DAYS;

-- Set a 7-day recovery period (overrides any catalog-level setting)
> ALTER SCHEMA my_catalog.my_schema SET RETAIN DROPPED TO 7 DAYS;