Nota:
El acceso a esta página requiere autorización. Puede intentar iniciar sesión o cambiar directorios.
El acceso a esta página requiere autorización. Puede intentar cambiar los directorios.
Se aplica a:
Databricks SQL
Databricks Runtime
Modifica el esquema o las propiedades de una tabla.
Las tablas temporales admiten ALTER TABLE ... SET TBLPROPERTIES y ALTER TABLE ... UNSET TBLPROPERTIES en proceso sin servidor, Databricks Runtime 18.2 y versiones posteriores, y Databricks SQL 2026.15 y versiones posteriores. Otras ALTER TABLE cláusulas no se admiten en tablas temporales y devuelven un error. 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.
Las tablas extranjeras soportan un conjunto limitado de ALTER TABLE operaciones, incluyendo ALTER TABLE SET OWNER, ALTER TABLE RENAME TO, ALTER TABLE SET MANAGED { MOVE | COPY }, y ALTER TABLE SET EXTERNAL.
SET MANAGED y SET EXTERNAL requieren una tabla extranjera federada usando Metastore Hive y Glue Federation, y SET MANAGED también requieren el formato Delta Lake. Consulta tablas extranjeras y Convertir una tabla extranjera en una tabla externa del Catálogo de Unity.
Permisos necesarios
Si usa Unity Catalog, debe tener el permiso MODIFY para:
ALTER COLUMNADD COLUMNDROP COLUMNSET TBLPROPERTIESUNSET TBLPROPERTIES
Si usas Unity Catalog, debe tener el permiso MANAGE o la propiedad para:
SET OWNER TOPREDICTIVE OPTIMIZATION
Todas las demás operaciones requieren la propiedad de la mesa, incluyendo SET MANAGED y UNSET MANAGED.
SET EXTERNAL y la forma de tabla extranjera de SET MANAGED también requiere CREATE permiso en el EXTERNAL LOCATION. Para conocer los requisitos previos completos de cada conversión, véase Prerrequisitos y Prerrequisitos.
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 EXTERNAL clause |
SET MANAGED clause |
UNSET MANAGED clause |
SET OWNER TO clause |
SET TAGS clause |
UNSET TAGS clause |
CLUSTER BY clause |
REPLACE PARTITIONED BY WITH CLUSTER BY clause |
PREDICTIVE OPTIMIZATION clause}
Parámetros
-
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 TOto_table_nameCambia el nombre de la tabla.
-
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_nameestar dentro del mismo catálogo quetable_name. Para otras tablas,to_table_namedebe estar dentro del mismo esquema quetable_name.Si
to_table_nameno está cualificado, se cualifica implícitamente con el esquema actual.
> ALTER TABLE student RENAME TO student_info;-
-
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
DEFAULTvalor. Todas las columnas agregadas a las tablas de Delta Lake se tratan comoNULLpara las filas existentes. Después de agregar una columna, puede definir opcionalmente un valor predeterminado para las nuevas filas medianteALTER 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';
-
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 NULLModificar 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 -
Elimine una o varias columnas o campos en una tabla Delta Lake.
-
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
-
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 COLLATIONcollation_nameSe aplica a:
Databricks SQL
Databricks Runtime 16.3 y versiones posterioresCambia la intercalación predeterminada de la tabla para las nuevas
STRINGcolumnas. Las columnas existentes no se ven afectadas por esta cláusula. Para cambiar la intercalación de una columna existente, useALTER TABLE ... ALTER COLUMN ... COLLATE collation_name.
-
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:
Databricks Runtime 14.3 LTS y versiones posterioresLa compatibilidad heredada para
DROP FEATUREestá 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:
Databricks SQL
Databricks Runtime 16.3 y versiones posterioresAzure Databricks recomienda usar Databricks Runtime 16.3 y versiones posteriores para todos los
DROP FEATUREcomandos, 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
checkpointProtectioncaracterística de escritura en el protocolo de tabla. Para obtener más información, vea Quitar características de tabla delta y versiones de protocolo y características de tabla.feature_nameEl nombre de una característica en forma de
STRINGliteral 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;-
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 -
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 -
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-
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.
-
Se aplica a:
Databricks SQL
Databricks Runtime 12.2 LTS y versiones posteriores
solo Unity CatalogAgrega 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 FILTERSe aplica a:
solo Unity CatalogQuita 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.
-
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'); -
Este parámetro quita una o más propiedades que defina el usuario.
> ALTER TABLE dbx.tab1 UNSET TBLPROPERTIES ('winner'); SET SERDESe aplica a:
Databricks RuntimeEspecifica 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 LOCATIONMueve la ubicación de una tabla.
SET LOCATION pathLOCATION pathpathdebe ser un literal deSTRING. 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 EXTERNAL [ DRY RUN ]Se aplica a:
Databricks Runtime 17.3 y versiones
Catálogo de Unity.Convierte una tabla extranjera en una tabla externa del Unity Catalog, conservando el historial y configuraciones de la tabla, incluyendo el nombre, los ajustes, permisos y las vistas. Solo soportado en tablas extranjeras federadas usando Metastore de Colmena y Federación de Pegamento.
Requiere
OWNERoMANAGEpermisos en la tabla yCREATEpermiso en elEXTERNAL LOCATION.Para revertir la conversión, baja la tabla. Azure Databricks la vuelve a federar como tabla extranjera durante la siguiente sincronización de catálogo.
DRY RUNComprueba si la tabla fuente puede convertirse sin convertirla. El comando devuelve
DRY_RUN_SUCCESSsi la tabla puede ser convertida.
Para requisitos previos y orientación específica por formato, véase Convertir una tabla extranjera a una tabla externa del Catálogo de Unity.
-- Check whether a foreign table can be converted > ALTER TABLE hms_federated_catalog.my_schema.my_table SET EXTERNAL DRY RUN; -- Convert a foreign table to an external table > ALTER TABLE hms_federated_catalog.my_schema.my_table SET EXTERNAL;
SET MANAGEDSe aplica a:
Runtime 17.3 LTS y superiores
Solo Unity CatálogoConvierte una tabla Delta Lake externa o extranjera del Catálogo Unity en una tabla gestionada por el Catálogo Unity. La conversión conserva el nombre de la tabla, la configuración, los permisos, las vistas y el historial.
Las tablas externas y extranjeras usan diferentes formas de la cláusula, como se muestra en la siguiente sintaxis:
SET MANAGED [ TRUNCATE UNIFORM HISTORY ] -- external tables SET MANAGED { MOVE | COPY } -- foreign tablesPara tablas externas, omita
MOVEyCOPY. Si incluyes cualquiera de los dos, Azure Databricks sube DELTA_ALTER_TABLE_SET_MANAGED_UNSUPPORTED_COPY_MOVE_SYNTAX.Para tablas extranjeras, especifique o
MOVECOPYbien . Si omites ambos, Azure Databricks sube DELTA_ALTER_TABLE_SET_MANAGED_COPY_OR_MOVE_REQUIRED. Para elegir entre las dos formas, consulte Elegir el comando correcto para su tabla fuente.TRUNCATE UNIFORM HISTORYSe aplica a tablas externas que tienen activadas las lecturas de Apache Iceberg . Si la tabla tiene activadas las lecturas Iceberg y omites esta opción, Azure Databricks sube DELTA_ALTER_TABLE_SET_MANAGED_DOES_NOT_SUPPORT_UNIFORM_ICEBERG.
TRUNCATE UNIFORM HISTORYtrunca la historia del iceberg UniForm y no elimina la historia del lago Delta. El truncamiento provoca un breve tiempo de inactividad de lectura y escritura del iceberg.MOVEConvierte una tabla extranjera en gestionada y deshabilita el acceso a la tabla fuente en el catálogo externo. Tras la conversión, el acceso a través del catálogo externo y el acceso basado en rutas fallan, por lo que todos los lectores y escritores deben usar el espacio de nombres del Catálogo de Unity.
COPYConvierte una tabla extranjera en gestionada sin modificar ni deshabilitar el acceso a la tabla fuente en el catálogo externo. La conversión copia los datos en la ubicación de almacenamiento gestionado, creando dos copias separadas de los datos. Eres responsable de desactivar las lecturas y escrituras en la tabla fuente y de migrar las cargas de trabajo a la tabla gestionada.
Para requisitos previos, estimaciones de tiempo de inactividad y resolución de problemas, véase Convertir tablas Delta Lake externas o extranjeras a tablas gestionadas por el Catálogo de Unity.
-- Convert an external table > ALTER TABLE main.default.my_external_table SET MANAGED; -- Convert an external table that has Iceberg reads enabled > ALTER TABLE main.default.my_external_table SET MANAGED TRUNCATE UNIFORM HISTORY; -- Convert a foreign table and disable access to the source table > ALTER TABLE hms_federated_catalog.my_schema.my_table SET MANAGED MOVE;UNSET MANAGEDSe aplica a:
Runtime 17.3 LTS y superiores
Solo Unity CatálogoConvierte una tabla
SET MANAGEDde vuelta a una tabla externa actualizando los metadatos de la tabla para que apunten a la ubicación externa original. Azure Databricks conserva las escrituras realizadas en la ubicación gestionada tras la conversión. Para una tabla externa convertida, puedes revertir en un plazo de 14 días desde la conversión.UNSET MANAGED [ TRUNCATE UNIFORM HISTORY ]TRUNCATE UNIFORM HISTORYSe aplica a tablas que tienen activadas las lecturas Iceberg. Si la tabla tiene activadas las lecturas Iceberg y omites esta opción, Azure Databricks sube DELTA_ALTER_TABLE_UNSET_MANAGED_DOES_NOT_SUPPORT_UNIFORM.
Los commits realizados entre conversión y retroceso soportan el viaje en el tiempo por versión, pero no por marca temporal.
Para crear una tabla extranjera convertida con
MOVEvolver a una tabla extranjera, ejecutaUNSET MANAGEDy luego elimina la tabla externa resultante, lo que la re-federa durante la siguiente sincronización de catálogo. Una tabla extranjera convertida conCOPYno necesitaUNSET MANAGED, porque la conversión dejó la tabla de origen sin modificar.Warning
Si convertiste una tabla extranjera con
MOVE, no elimines la tabla gestionada antes de ejecutarUNSET MANAGED. Eliminarlo primero podría provocar pérdida de datos o inconsistencias.Para las instrucciones completas de rollback, véase Revertir una conversión de tabla gestionada.
-- Roll a converted managed table back to an external table > ALTER TABLE main.default.my_managed_table UNSET MANAGED;[ SET ] OWNER TOentidad de seguridadTransfiere la propiedad de la tabla a
principal.Se aplica a:
Databricks SQL
Databricks Runtime 11.3 LTS y versiones posterioresSETse permite como una palabra clave opcional.Note
El cambio del propietario no está disponible en los conjuntos de datos administrados por una canalización del área de trabajo.
SET TAGS ( { tag_name = tag_value } [, ...] )Se aplica a:
Databricks SQL
Databricks Runtime 13.3 LTS y versiones posterioresAplica etiquetas a la tabla. Debe tener el permiso
APPLY TAGpara agregar etiquetas a la tabla.tag_name
Un literal de
STRING. Eltag_namedebe 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:
Databricks SQL
Databricks Runtime 13.3 LTS y versiones posterioresElimina las etiquetas de la tabla. Debe tener el permiso
APPLY TAGpara quitar etiquetas de la tabla.tag_name
Un literal de
STRING. Eltag_namedebe 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:
Databricks SQL
Databricks Runtime 13.3 LTS y versiones posterioresAgrega, cambia o anula la estrategia de agrupación en clústeres para una tabla de Delta Lake.
REPLACE PARTITIONED BY WITH CLUSTER BY [( <clustering_columns> ) | AUTO]Se aplica a:
Databricks SQL
Databricks Runtime 18.1 y versiones posterioresConvierte una tabla de Delta Lake con particiones existente en clústeres líquidos, con un tiempo de inactividad mínimo de lector y escritor. La
CLUSTER BYcláusula acepta columnas de agrupación en clústeres explícitas,AUTOpara delegar la selección de claves a la optimización predictiva o se puede omitir para usar las columnas de partición existentes.Consulte Conversión de una tabla con particiones en clústeres líquidos.
{ ENABLE | DISABLE | INHERIT } PREDICTIVE OPTIMIZATIONSe aplica a:
Databricks SQL
Databricks Runtime 12.2 LTS y versiones posteriores
solo Unity CatalogModifica 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
INHERITdesde 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:
Artículos relacionados
- ADD CONSTRAINT cláusula: agregue o quite restricciones check, claves principales y claves externas.
- ALTER MATERIALIZED VIEW: sintaxis para modificar vistas materializadas.
- ALTER STREAMING TABLE: sintaxis para modificar tablas de streaming.
- ALTER TABLE Cláusula ...COLUMN: sintaxis completa para ADD, ALTER, DROP y RENAME COLUMN.
- ALTER TABLE … PARTITION: sintaxis completa para agregar, quitar y cambiar el nombre de las particiones.
- Actualizar esquemas de tabla con evolución del esquema: cambie el nombre o cambie los tipos de columna en una tabla Delta.
-
Convertir tablas Delta Lake externas o extranjeras a tablas gestionadas por Unity Catalog: Prerrequisitos, estimaciones de tiempo de inactividad y rollback para
SET MANAGEDyUNSET MANAGED. -
Convertir una tabla extranjera en una tabla externa del Catálogo de Unity: Prerrequisitos y directrices específicas de formato para
SET EXTERNAL.