Поделиться через


ALTER TABLE ... COLUMN статья

Область применения:отмечено Databricks SQL отмечено Databricks Runtime

Добавляет, изменяет или удаляет столбец в таблице или материализованном представлении или поле в столбце в таблице Delta Lake.

Необходимые разрешения

Если вы используете каталог Unity, вам необходимо разрешение MODIFY на выполнение следующих действий:

  • ALTER COLUMN
  • ADD COLUMN
  • DROP COLUMN

Для всех остальных операций необходимо быть владельцем таблицы.

Синтаксис

ALTER TABLE table_name
   { ADD COLUMN clause |
     ALTER COLUMN clause |
     DROP COLUMN clause |
     RENAME COLUMN clause }

Добавить COLUMN условие

Это предложение не поддерживается для источников данных JDBC.

Добавляет один или несколько столбцов в таблицу или одно или несколько полей в существующие столбцы в таблице Delta Lake.

Примечание.

При добавлении столбца в существующую таблицу Delta вы не можете задать значение DEFAULT. Все столбцы, добавленные в таблицы Delta, обрабатываются как NULL для существующих строк. После добавления столбца можно при необходимости определить значение по умолчанию для столбца, но оно применяется только для новых строк, вставленных в таблицу. Используйте следующий синтаксис:

ALTER TABLE table_name ALTER COLUMN column_name SET DEFAULT default_expression

Синтаксис

{ ADD [ COLUMN | COLUMNS ]
  ( { { column_identifier | field_name } data_type
      [ COLLATE collation_name ]
      [ DEFAULT clause ]
      [ COMMENT comment ]
      [ FIRST | AFTER identifier ]
      [ MASK clause ] } [, ...] ) }

Параметры

  • column_identifier

    Имя добавляемого столбца. Имя должно быть уникальным в пределах таблицы.

    Если не указаны параметры FIRST и AFTER name, новый столбец или новое поле будут добавлены в конец.

  • field_name

    Полное имя поля, которое будет добавлено к существующему столбцу. Все компоненты пути к вложенному полю должны существовать, а имя поля должно быть уникальным.

  • DEFAULT default_expression

    Область применения:флажок Databricks SQL флажок Databricks Runtime 11.3 LTS и выше

    Определяет значение DEFAULT для столбца, который используется в INSERT и MERGE ... INSERT, когда столбец не указан. Все литералы STRING и функции STRING в выражении по умолчанию будут использовать коллатуру UTF8_BINARY.

    Если значение по умолчанию не указано, для столбцов, допускающих значение NULL, подразумевается DEFAULT NULL.

    default_expression может состоять из литералов и встроенных функций SQL или операторов за исключением следующих:

    default_expression не должен содержать любых вложенных запросов.

    DEFAULT поддерживается для источников CSV, JSON, PARQUET и ORC.

  • тип данных

    Задает тип данных столбца или поля. Не все типы данных, поддерживаемые Azure Databricks, поддерживаются всеми источниками данных.

  • COLLATE collation_name

    Для data_typeSTRING опционально указывает сортировку, используемую со столбцом или полем. Если не указано, применяется сортировка UTF8_BINARY.

  • COMMENT comment

    Необязательный литерал STRING, который описывает добавленный столбец или поле.

    Если вы хотите добавить созданный ИИ комментарий для таблицы или столбца таблицы, управляемого каталогом Unity, см. статью "Добавление примечаний, созданных ИИ" в объекты каталога Unity.

  • FIRST

    Если указан этот параметр, столбец будет добавлен на первую позицию в таблице или поле будет добавлено на первую позицию в содержащей его структуре.

  • AFTER идентификатор

    Если столбец или поле указаны, они будут добавлены сразу после поля или столбца identifier.

  • Клаузула MASK

    Применимо к:флажок Databricks SQL флажок Databricks Runtime 12.2 LTS и более поздним версиям флажок только Unity Catalog

    Внимание

    Эта функция предоставляется в режиме общедоступной предварительной версии.

    Добавляет функцию маски столбца для анонимизации конфиденциальных данных. Все последующие запросы из этого столбца получат результат оценки этой функции по столбцу вместо исходного значения столбца. Это может быть полезно для точного контроля доступа, где функция может проверять личность или членство пользователя в группах, чтобы определить, следует ли скрыть значение.

Предложение ALTER COLUMN

Область применения:отмечено Databricks SQL отмечено Databricks Runtime

Изменяет свойство или расположение столбца.

Синтаксис

 { ALTER | CHANGE } [ COLUMN ]
  { { column_identifier | field_name }
    { COMMENT comment |
    { FIRST | AFTER column_identifier } |
    { SET | DROP } NOT NULL |
    TYPE data_type |
    SET DEFAULT clause |
    DROP DEFAULT |
    SYNC IDENTITY }
  [, ... ]

До Databricks Runtime 16.3 предложение не поддерживает изменение нескольких столбцов в одном предложении.

{ ALTER | CHANGE } [ COLUMN ]
  { column_identifier | field_name }
  { SET { MASK clause } |
    DROP MASK |
    SET TAGS clause |
    UNSET TAGS clause }

Параметры

  • column_identifier

    Имя столбца, который требуется изменить.

    Если идентификатор столбца используется более одного раза, Azure Databricks генерирует NOT_SUPPORTED_CHANGE_SAME_COLUMN.

  • field_name

    Полное квалифицированное имя поля, подлежащего изменению. Должны существовать все компоненты пути к вложенному полю.

    Если имя поля упоминается более одного раза, Azure Databricks вызывает NOT_SUPPORTED_CHANGE_SAME_COLUMN.

  • COMMENT comment

    Изменяет описание столбца column_name. comment должен быть литералом STRING.

  • FIRST или AFTERидентификатор

    Перемещает столбец из текущего положения на первую позицию (FIRST) или сразу (AFTER) identifier. Это предложение поддерживается, только если table_name указывает на таблицу Delta.

  • TYPE тип_данных

    Область применения: отмечено Databricks SQL отмечено Databricks Runtime 15.2 и более поздних версий

    Изменяет тип данных столбца column_name .

    Это предложение поддерживается, только если table_name указывает на таблицу Delta.

    Для всех таблиц Delta поддерживаются следующие изменения типов:

    • Увеличение размера столбца VARCHAR , например от VARCHAR(5) до VARCHAR(10)
    • Изменение типа столбца CHAR на VARCHAR, например, с CHAR(5) на VARCHAR(5)
    • Изменение типа столбца CHAR или VARCHAR на STRING, например, с VARCHAR(10) на STRING.

    Следующие изменения типа поддерживаются для таблиц Delta, когда delta.enableTypeWidening установлено на true:

    Внимание

    Эта функция доступна в общедоступной предварительной версии в Databricks Runtime 15.2 и выше.

    Тип источника Поддержка более широкого спектра типов
    BYTE SHORT, , INTBIGINT, DECIMALDOUBLE
    SHORT INT, BIGINT, DECIMAL, DOUBLE
    INT BIGINT, DECIMAL, DOUBLE
    BIGINT DECIMAL, DOUBLE
    FLOAT DOUBLE
    DECIMAL DECIMAL с большей точностью и масштабированием
    DATE TIMESTAMP_NTZ

    Дополнительные сведения о расширении типов см. в разделе "Расширение типов".

  • SET NOT NULL или DROP NOT NULL

    Изменяет домен допустимых значений столбца, чтобы исключить значения NULL (SET NOT NULL) или включить значения NULL (DROP NOT NULL). Эта возможность поддерживается только для таблиц Delta Lake. Delta Lake будет отслеживать соблюдение этого ограничения для всех существующих и новых данных.

  • SYNC IDENTITY

    Область применения:флажок Databricks SQL флажок Databricks Runtime 10.4 LTS и выше

    Синхронизируйте метаданные для столбца идентификаторов с фактическими данными. Если вы пишете собственные значения в столбец идентичности, они могут не соответствовать метаданным. Этот механизм оценивает состояние и обновляет метаданные в соответствии с фактическими данными. После выполнения этой команды следующее автоматически назначенное значение идентификатора будет начинаться с позиции start + (n + 1) * step, где n — наименьшее значение, удовлетворяющее start + n * step >= max() (для положительного шага).

    Этот механизм поддерживается только для столбцов идентичности в таблицах Delta Lake.

  • DROP DEFAULT

    Область применения:флажок Databricks SQL флажок Databricks Runtime 11.3 LTS и выше

    Удаляет выражение по умолчанию из столбца. Для столбцов, допускающих значение NULL, это эквивалентно SET DEFAULT NULL. Для столбцов, определенных с NOT NULL, вам необходимо указать значение для каждой будущей операции INSERT

  • SET DEFAULT default_expression

    Область применения:флажок Databricks SQL флажок Databricks Runtime 11.3 LTS и выше

    Определяет значение DEFAULT для столбца, который используется в INSERT и MERGE ... INSERT, когда столбец не указан.

    Если значение по умолчанию не указано, то для столбцов, допускающих значение NULL, подразумевается DEFAULT NULL.

    default_expression может состоять из литералов, встроенных функций SQL или операторов за исключением следующих:

    default_expression не должен содержать любых вложенных запросов.

    DEFAULT поддерживается для источников CSV, JSON, ORC и PARQUET.

    При определении значения по умолчанию для добавленного столбца значение по умолчанию применяется ко всем существующим строкам. Если значение по умолчанию включает недетерминированную функцию, например rand или current_timestamp значение вычисляется один раз при выполнении ALTER TABLE и применяется в качестве константы к существующим строкам. Для недавно вставленных строк выражение по умолчанию выполняется один раз на каждую строку.

    При настройке по умолчанию ALTER COLUMNсуществующие строки не влияют на это изменение.

  • SET Предложение MASK

    Применимо к:флажок Databricks SQL флажок Databricks Runtime 12.2 LTS и более поздним версиям флажок только Unity Catalog

    Внимание

    Эта функция предоставляется в режиме общедоступной предварительной версии.

    Добавляет функцию маски столбца для анонимизации конфиденциальных данных. Все последующие запросы из этого столбца получат результат оценки этой функции по столбцу вместо исходного значения столбца. Это может быть полезно для точного контроля доступа, где функция может проверять личность или членство пользователя в группах, чтобы определить, следует ли скрыть значение.

  • DROP MASK

    Область применения:отмечено галочкой только для каталога Unity

    Внимание

    Эта функция предоставляется в режиме общедоступной предварительной версии.

    Удаляет маску для этого столбца, если она имеется. Будущие запросы из этого столбца получат исходные значения столбца.

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

    Область применения:флажок Databricks SQL флажок Databricks Runtime 13.3 LTS и выше

    Примените теги к столбцу. Необходимо иметь APPLY TAG разрешение на добавление тегов в столбец.

    • tag_name

      Литерал STRING. Элемент tag_name должен быть уникальным в таблице или столбце.

    • tag_value

      Литерал STRING.

  • UNSET TAGS ( tag_name [, ...] )

    Область применения:флажок Databricks SQL флажок Databricks Runtime 13.3 LTS и выше

    Удалите теги из столбца. Необходимо иметь APPLY TAG разрешение на удаление тегов из столбца.

    • tag_name

      Литерал STRING. Элемент tag_name должен быть уникальным в таблице или столбце.

Предложение DROP COLUMN

Внимание

Эта функция предоставляется в режиме общедоступной предварительной версии.

Область применения:флажок Databricks SQL флажок Databricks Runtime 11.3 LTS и выше

Удалите один или несколько столбцов или полей в отношении.

При удалении столбца или поля также нужно удалить все зависимые проверочные ограничения и автоматически создаваемые столбцы.

Сведения о требованиях см. в разделе «Переименуйте и удалите столбцы с использованием сопоставления столбцов Delta Lake».

Синтаксис

DROP [COLUMN | COLUMNS] [ IF EXISTS ] ( { {column_identifier | field_name} [, ...] )

Параметры

  • IF EXISTS

    При указании IF EXISTSAzure Databricks игнорирует попытку удалить столбцы, которые не существуют. В противном случае удаление несуществующих столбцов вызовет ошибку.

  • column_identifier

    Имя существующего столбца.

  • field_name

    Полное квалифицированное имя существующего поля.

Условие RENAME COLUMN

Внимание

Эта функция предоставляется в режиме общедоступной предварительной версии.

Область применения:флажок Databricks SQL флажок Databricks Runtime 10.4 LTS и выше

Переименовывает столбец или поле в таблице Delta Lake с включённым сопоставлением столбцов.

При изменении имени столбца или поля необходимо также изменить зависимые проверочные ограничения и созданные столбцы. Все первичные ключи и внешние ключи, использующие столбец, будут удалены. При использовании внешних ключей необходимо владеть таблицей, для которой определен внешний ключ.

Для получения информации о требованиях и включении функции сопоставления столбцов см. раздел «Переименование и удаление столбцов при использовании сопоставления столбцов Delta Lake».

Синтаксис

RENAME COLUMN { column_identifier TO to_column_identifier|
                field_name TO to_field_identifier }

Параметры

  • column_identifier

    Существующее название столбца.

  • to_column_identifier

    Новый идентификатор столбца. Идентификатор должен быть уникальным в пределах таблицы.

  • field_name

    Полностью квалифицированное имя существующего поля.

  • to_field_identifier

    Новый идентификатор поля. Идентификатор должен быть уникальным в пределах локальной структуры.

Примеры

См. примеры ALTER TABLE.