ALTER TABLE

Se aplica a:casilla marcada como Sí Databricks SQL casilla marcada como Sí Databricks Runtime

Modifica el esquema o las propiedades de una tabla.

El ALTER TABLE comando no se admite para tablas temporales. Se devuelve un error si el ALTER TABLE comando se aplica a una tabla temporal. Si la tabla se almacena en caché, el comando borra los datos almacenados en caché de la tabla y todos los elementos dependientes que hacen referencia a ella. La memoria caché se rellenará de forma diferida cuando se acceda a la tabla o a los dependientes la próxima vez.

En tablas externas, solo puede realizar ALTER TABLE SET OWNER y ALTER TABLE RENAME TO.

Permisos necesarios

Si usa Unity Catalog, debe tener el permiso MODIFY para:

  • ALTER COLUMN
  • ADD COLUMN
  • DROP COLUMN
  • SET TBLPROPERTIES
  • UNSET TBLPROPERTIES
  • PREDICTIVE OPTIMIZATION

Si usas Unity Catalog, debe tener el permiso MANAGE o la propiedad para:

  • SET OWNER TO

Todas las demás operaciones requieren la titularidad de la tabla.

Sintaxis

ALTER TABLE table_name
    { RENAME TO clause |
      ADD COLUMN clause |
      ALTER COLUMN clause |
      DROP COLUMN clause |
      RENAME COLUMN clause |
      DEFAULT COLLATION clause |
      ADD CONSTRAINT clause |
      DROP CONSTRAINT clause |
      DROP FEATURE clause |
      ADD PARTITION clause |
      DROP PARTITION clause |
      PARTITION SET LOCATION clause |
      RENAME PARTITION clause |
      RECOVER PARTITIONS clause |
      SET { ROW FILTER clause } |
      DROP ROW FILTER |
      SET TBLPROPERTIES clause |
      UNSET TBLPROPERTIES clause |
      SET SERDE clause |
      SET LOCATION clause |
      SET OWNER TO clause |
      SET SERDE clause |
      SET TAGS clause |
      UNSET TAGS clause |
      CLUSTER BY clause |
      PREDICTIVE OPTIMIZATION clause}

Parámetros

  • table_name

    Identifica la tabla que se va a modificar. El nombre no debe incluir una especificación temporal ni una especificación de opciones. Si no se encuentra la tabla, Azure Databricks genera un error TABLE_OR_VIEW_NOT_FOUND.

  • RENAME TO to_table_name

    Cambia el nombre de la tabla.

    • to_table_name

      Identifica el nuevo nombre de tabla. El nombre no debe incluir una especificación temporal ni una especificación de opciones.

      En el caso de las tablas de Catálogo de Unity, debe to_table_name estar dentro del mismo catálogo que table_name. Para otras tablas, to_table_name debe estar dentro del mismo esquema que table_name.

      Si to_table_name no está cualificado, se cualifica implícitamente con el esquema actual.

    > ALTER TABLE student RENAME TO student_info;
    
  • AGREGAR COLUMN

    Agrega una o más columnas a la tabla.

    Al agregar una columna a una tabla de Delta Lake existente, no se puede definir un DEFAULT valor. Todas las columnas agregadas a las tablas de Delta Lake se tratan como NULL para las filas existentes. Después de agregar una columna, puede definir opcionalmente un valor predeterminado para las nuevas filas mediante ALTER COLUMN.

    > DESCRIBE StudentInfo;
                    col_name data_type comment
    ----------------------- --------- -------
                        name    string    NULL
                      rollno       int    NULL
                         age       int    NULL
    
    > ALTER TABLE StudentInfo ADD columns (LastName string, DOB timestamp);
    
    -- After adding new columns to the table
    > DESCRIBE StudentInfo;
                    col_name data_type comment
    ----------------------- --------- -------
                        name    string    NULL
                      rollno       int    NULL
                    LastName    string    NULL
                         DOB timestamp    NULL
                         age       int    NULL
    
    -- Optionally set a default value for new rows
    > ALTER TABLE StudentInfo ALTER COLUMN LastName SET DEFAULT 'unknown';
    

  • ALTERAR COLUMN

    Cambia una propiedad o la ubicación de una columna.

    > DESCRIBE StudentInfo;
                    col_name data_type comment
    ----------------------- --------- -------
                        name    string    NULL
                      rollno       int    NULL
                    LastName    string    NULL
                         DOB timestamp    NULL
                         age       int    NULL
    
    > ALTER TABLE StudentInfo ALTER COLUMN name COMMENT "new comment";
    
    -- After altering the column
    > DESCRIBE StudentInfo;
                    col_name data_type     comment
    ----------------------- --------- -----------
                        name    string new comment
                      rollno       int        NULL
                    LastName    string        NULL
                         DOB timestamp        NULL
                         age       int        NULL
    

    Modificar varias columnas en una sola instrucción:

    -- Create a table with 3 columns
    > CREATE TABLE my_table (num INT, str STRING, bool BOOLEAN) TBLPROPERTIES('delta.feature.allowColumnDefaults' = 'supported')
    > DESCRIBE TABLE my_table;
      col_name    data_type     comment
      --------    ---------     -------
           num          int        null
           str       string        null
           bool      boolean       null
    
    -- Update comments on multiple columns
    > ALTER TABLE table ALTER COLUMN
       num COMMENT 'number column',
       str COMMENT 'string column';
    
    > DESCRIBE TABLE my_table;
      col_name    data_type      comment
      --------    ---------   -------------
           num          int   number column
           str       string   string column
          bool      boolean            null
    
    -- Can mix different types of column alter
    > ALTER TABLE table ALTER COLUMN
       bool COMMENT 'boolean column',
       num AFTER bool,
       str AFTER num,
       bool SET DEFAULT true;
    
    > DESCRIBE TABLE my_table;
      col_name    data_type      comment
      --------    ---------   --------------
          bool      boolean   boolean column
           num          int    number column
           str       string    string column
    
  • ELIMINAR COLUMN

    Elimine una o varias columnas o campos en una tabla Delta Lake.

  • cambiar el nombre de COLUMN

    Cambia el nombre de una columna o de un campo de una tabla de Delta Lake.

    > ALTER TABLE StudentInfo RENAME COLUMN name TO FirstName;
    
    -- After renaming the column
    > DESCRIBE StudentInfo;
                    col_name data_type     comment
    ----------------------- --------- -----------
                   FirstName    string new comment
                      rollno       int        NULL
                    LastName    string        NULL
                         DOB timestamp        NULL
                         age       int        NULL
    

  • ADD CONSTRAINT

    Agrega una restricción de comprobación, una restricción de clave externa informativa o una restricción de clave principal informativa a la tabla.

    Las claves externas y las claves primarias solo se admiten para tablas en Unity Catalog, no para el catálogo hive_metastore.

  • DEFAULT COLLATION collation_name

    Se aplica a:marcado como sí Databricks SQL marcado como sí Databricks Runtime 16.3 y versiones posteriores

    Cambia la intercalación predeterminada de la tabla para las nuevas STRING columnas. Las columnas existentes no se ven afectadas por esta cláusula. Para cambiar la intercalación de una columna existente, use ALTER TABLE ... ALTER COLUMN ... COLLATE collation_name.

  • DROP CONSTRAINT

    Elimina una clave primaria, clave foránea o restricción de verificación de la tabla.

  • DROP FEATURE feature_name [ TRUNCATE HISTORY ]

    Se aplica a:marcado con un sí Databricks Runtime 14.3 LTS y versiones posteriores

    La compatibilidad heredada para DROP FEATURE está disponible a partir de Databricks Runtime 14.3 LTS. Para obtener documentación sobre la funcionalidad heredada, consulte Drop Delta table features (legacy).

    Se aplica a:marcado como sí Databricks SQL marcado como sí Databricks Runtime 16.3 y versiones posteriores

  • Azure Databricks recomienda usar Databricks Runtime 16.3 y versiones posteriores para todos los DROP FEATURE comandos, lo que reemplaza el comportamiento heredado.

    Quita una característica de una tabla de Delta Lake.

    La eliminación de una característica puede dar lugar a la adición de la checkpointProtection característica de escritura en el protocolo de tabla. Para obtener más información, consulte Quitar características de la tabla Delta y Características de la tabla para la compatibilidad del protocolo.

    • feature_name

      El nombre de una característica en forma de STRING literal o identificador que Azure Databricks debe entender y admitir en la tabla.

      Si la característica no está presente en la tabla Azure Databricks genera DELTA_FEATURE_DROP_FEATURE_NOT_PRESENT.

    • TRUNCAR HISTORIAL

      Eliminación de características truncando el historial. Esto requiere un proceso de dos fases:

La eliminación de características truncando el historial requiere un proceso de dos pasos:

  • La primera invocación borra los rastros de la función y te informa de un éxito parcial.

  • A continuación, espere hasta que finalice el período de retención de datos antes de ejecutar nuevamente la instrucción para completar la eliminación.

    Si inicia la segunda invocación demasiado pronto, Azure Databricks genera DELTA_FEATURE_DROP_WAIT_FOR_RETENTION_PERIOD o DELTA_FEATURE_DROP_HISTORICAL_VERSIONS_EXIST.

    Truncar el historial de tablas limita la capacidad de realizar DESCRIBE HISTORY y ejecutar consultas de viaje en tiempo.

    -- Drop the "deletion vectors" from a Delta table
    > ALTER TABLE my_table DROP FEATURE deletionVectors;
    
    -- 24 hours later
    > ALTER TABLE my_table DROP FEATURE deletionVectors TRUNCATE HISTORY;
    
  • AGREGAR PARTITION

    Agrega una o varias particiones a la tabla.

    > SHOW PARTITIONS StudentInfo;
    partition
    ---------
        age=11
        age=12
        age=15
    
    > ALTER TABLE StudentInfo ADD IF NOT EXISTS PARTITION (age=18);
    
    -- After adding a new partition to the table
    > SHOW PARTITIONS StudentInfo;
    partition
    ---------
        age=11
        age=12
        age=15
        age=18
    
    -- Adding multiple partitions to the table
    > ALTER TABLE StudentInfo ADD IF NOT EXISTS PARTITION (age=18) PARTITION (age=20);
    
    > SHOW PARTITIONS StudentInfo;
    partition
    ---------
        age=11
        age=12
        age=15
        age=18
        age=20
    
  • ELIMINAR PARTITION

    Elimina una o varias particiones de una tabla.

    > SHOW PARTITIONS StudentInfo;
    partition
    ---------
        age=11
        age=12
        age=15
        age=18
    
    > ALTER TABLE StudentInfo DROP IF EXISTS PARTITION (age=18);
    
    -- After dropping the partition of the table
    > SHOW PARTITIONS StudentInfo;
    partition
    ---------
        age=11
        age=12
        age=15
    
  • PARTITION SET UBICACIÓN

    Asigna la ubicación de una partición.

    > ALTER TABLE dbx.tab1 PARTITION (a='1', b='2') SET LOCATION '/path/to/part/ways';
    
  • cambiar el nombre de PARTITION

    Reemplaza las claves de una partición.

    > SHOW PARTITIONS StudentInfo;
    partition
    ---------
        age=10
        age=11
        age=12
    
    > ALTER TABLE default.StudentInfo PARTITION (age='10') RENAME TO PARTITION (age='15');
    
    -- After renaming Partition
    > SHOW PARTITIONS StudentInfo;
    partition
    ---------
        age=11
        age=12
        age=15
    
  • RECUPERAR PARTICIONES

    Indica a Azure Databricks que examine la ubicación de la tabla y agregue los archivos a la tabla que se han agregado directamente al sistema de archivos.

  • SET Cláusula ROW FILTER

    Se aplica a:casilla marcada como sí Databricks SQL casilla marcada como Sí Databricks Runtime 12.2 LTS y versiones posteriores casilla marcada como Sí solo Unity Catalog

    Agrega una función de filtro de fila a la tabla. Todas las consultas posteriores de esa tabla reciben un subconjunto de las filas donde la función se evalúa como TRUE booleano. Esto puede ser útil para fines de control de acceso específicos en los que la función puede inspeccionar la identidad o las pertenencias a grupos del usuario que realiza la invocación para decidir si se filtran determinadas filas.

  • DROP ROW FILTER

    Se aplica a:comprobar sí marcado solo Unity Catalog

    Quita el filtro de fila de la tabla, si existe. Las consultas futuras devolverán todas las filas de la tabla sin ningún filtrado automático.

  • SET TBLPROPERTIES

    Este parámetro le permite establecer o restablecer una o más propiedades que defina el usuario.

    > ALTER TABLE dbx.tab1 SET TBLPROPERTIES ('winner' = 'loser');
    
  • DESACTIVAR TBLPROPERTIES

    Este parámetro quita una o más propiedades que defina el usuario.

    > ALTER TABLE dbx.tab1 UNSET TBLPROPERTIES ('winner');
    
  • SET SERDE

    Se aplica a:comprobar que se ha marcado sí Databricks Runtime

    Especifica la clase serializador/deserializador (SerDe) que se usa para leer y escribir datos en una tabla con formato hive. También puede configurar las propiedades de SerDe con WITH SERDEPROPERTIES.

    > ALTER TABLE test_tab SET SERDE 'org.apache.hadoop.hive.serde2.columnar.LazyBinaryColumnarSerDe';
    
    > ALTER TABLE dbx.tab1 SET SERDE 'org.apache.hadoop' WITH SERDEPROPERTIES ('k' = 'v', 'kay' = 'vee');
    
  • SET LOCATION

    Mueve la ubicación de una tabla.

    SET LOCATION path
    
    • LOCATION path

      path debe ser un literal de STRING. Especifica la nueva ubicación de la tabla.

      Los archivos de la ubicación original no se trasladarán a la nueva ubicación.

  • [ SET ] OWNER TO entidad de seguridad

    Transfiere la propiedad de la tabla a principal.

    Se aplica a:casilla marcada como sí Databricks SQL casilla marcada como Sí Databricks Runtime 11.3 LTS y versiones posteriores

    SET se permite como una palabra clave opcional.

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

    Se aplica a:casilla marcada como sí Databricks SQL casilla marcada como sí Databricks Runtime 13.3 LTS y versiones posteriores

    Aplica etiquetas a la tabla. Debe tener el permiso APPLY TAG para agregar etiquetas a la tabla.

    • tag_name

      Un literal de STRING. El tag_name debe ser único en la tabla o columna.

    • tag_value

      Un literal de STRING.

    -- Applies three tags to the table named `test`.
    > ALTER TABLE test SET TAGS ('tag1' = 'val1', 'tag2' = 'val2', 'tag3' = 'val3');
    
    -- Applies three tags to table `main.schema1.test` column `col1`.
    > ALTER TABLE main.schema1.test ALTER COLUMN col1 SET TAGS ('tag1' = 'val1', 'tag2' = 'val2', 'tag3' = 'val3');
    
  • UNSET TAGS ( tag_name [, ...] )

    Se aplica a:casilla marcada como sí Databricks SQL casilla marcada como sí Databricks Runtime 13.3 LTS y versiones posteriores

    Elimina las etiquetas de la tabla. Debe tener el permiso APPLY TAG para quitar etiquetas de la tabla.

    • tag_name

      Un literal de STRING. El tag_name debe ser único en la tabla o columna.

    -- Removes three tags from the table named `test`.
    > ALTER TABLE test UNSET TAGS ('tag1', 'tag2', 'tag3');
    
    -- Removes three tags from table `main.schema1.test` column `col1`.
    > ALTER TABLE main.schema1.test ALTER COLUMN col1 UNSET TAGS ('tag1', 'tag2', 'tag3');
    
  • Cláusula CLUSTER BY

    Se aplica a:casilla marcada como sí Databricks SQL casilla marcada como sí Databricks Runtime 13.3 LTS y versiones posteriores

    Agrega, cambia o anula la estrategia de agrupación en clústeres para una tabla de Delta Lake.

  • { ENABLE | DISABLE | INHERIT } PREDICTIVE OPTIMIZATION

    Se aplica a:casilla marcada como sí Databricks SQL casilla marcada como Sí Databricks Runtime 12.2 LTS y versiones posteriores casilla marcada como Sí solo Unity Catalog

    Modifica la tabla de Delta Lake administrada a la configuración de optimización predictiva deseada.

    De forma predeterminada, cuando se crean tablas, el comportamiento es INHERIT desde el esquema.

    Cuando la optimización predictiva está habilitada explícitamente o se hereda como habilitada, OPTIMIZE y VACUUM se invocarán automáticamente en la tabla según lo estime apropiado Azure Databricks. Para obtener más detalles, consulte: Optimización predictiva para tablas administradas de Unity Catalog.

    -- Enables predictive optimization for my_table
    > ALTER TABLE my_table ENABLE PREDICTIVE OPTIMIZATION;
    

Ejemplos adicionales

Para ver ejemplos de incorporación de restricciones y modificación de columnas de Delta Lake, consulte: