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.
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 COLUMNADD COLUMNDROP COLUMNSET TBLPROPERTIESUNSET TBLPROPERTIESPREDICTIVE 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
-
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, consulte Quitar características de la tabla Delta y Características de la tabla para la compatibilidad del protocolo.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 ] 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.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.
{ 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 esquema de tabla: cambie el nombre o cambie los tipos de columna en una tabla Delta.