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.
Para obtener información sobre cambios de tipo o cambios de nombre de las columnas en Delta Lake, consulte reescritura de los datos.
Para cambiar el comentario en una tabla o una columna, también puede usar COMMENT ON.
Para modificar un STREAMING TABLE
, use ALTER STREAMING TABLE.
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.
Nota:
Al agregar una columna a una tabla Delta existente, no se puede definir un valor de DEFAULT
. Todas las columnas agregadas a las tablas Delta se tratan como NULL
para las filas existentes. Después de agregar una columna, puede definir opcionalmente un valor predeterminado para la columna, pero solo se aplica a las nuevas filas insertadas en la tabla. Use la sintaxis siguiente:
ALTER TABLE table_name ALTER COLUMN column_name SET DEFAULT default_expression
En tablas foráneas, se puede ejecutar únicamente 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
- modificar
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
-
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_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_name
estar dentro del mismo catálogo quetable_name
. Para otras tablas,to_table_name
debe estar dentro del mismo esquema quetable_name
.Si
to_table_name
no está cualificado, se cualifica implícitamente con el esquema actual.
-
-
Agrega una o más columnas a la tabla.
-
Cambia una propiedad o la ubicación de una columna.
-
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.
-
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_nameSe aplica a:
Databricks SQL
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, 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 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:
Databricks SQL
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.
-
Agrega una o varias particiones a la tabla.
-
Elimina una o varias particiones de una tabla.
-
Asigna la ubicación de una partición.
cambiar el nombre de PARTITION
Reemplaza las claves de una partición.
-
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 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:
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.
-
Este parámetro le permite establecer o restablecer una o más propiedades que defina el usuario.
-
Este parámetro quita una o más propiedades que defina el usuario.
SET LOCATION
Mueve la ubicación de una tabla.
SET LOCATION path
LOCATION path
path
debe 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 TO
entidad de seguridadTransfiere la propiedad de la tabla a
principal
.Se aplica a:
Databricks SQL
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:
Databricks SQL
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
. Eltag_name
debe ser único en la tabla o columna.tag_value
Un literal de
STRING
.
UNSET TAGS ( tag_name [, ...] )
Se aplica a:
Databricks SQL
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
. Eltag_name
debe ser único en la tabla o columna.
Cláusula CLUSTER BY
Se aplica a:
Databricks SQL
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:
Databricks SQL
Databricks Runtime 12.2 LTS y versiones posteriores
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.
Ejemplos
Para ver ejemplos de incorporación de restricciones y modificación de columnas de Delta Lake, consulte:
-- RENAME table
> DESCRIBE student;
col_name data_type comment
----------------------- --------- -------
name string NULL
rollno int NULL
age int NULL
# Partition Information
# col_name data_type comment
age int NULL
> ALTER TABLE Student RENAME TO StudentInfo;
-- After Renaming the table
> DESCRIBE StudentInfo;
col_name data_type comment
----------------------- --------- -------
name string NULL
rollno int NULL
age int NULL
# Partition Information
# col_name data_type comment
age int NULL
-- RENAME partition
> 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
-- Add new columns to a table
> DESCRIBE StudentInfo;
col_name data_type comment
----------------------- --------- -------
name string NULL
rollno int NULL
age int NULL
# Partition Information
# col_name data_type comment
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
# Partition Information
# col_name data_type comment
age int NULL
-- Add a new partition to a table
> 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
-- Drop a partition from the table
> 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
-- Adding multiple partitions to the table
> SHOW PARTITIONS StudentInfo;
partition
---------
age=11
age=12
age=15
> ALTER TABLE StudentInfo ADD IF NOT EXISTS PARTITION (age=18) PARTITION (age=20);
-- After adding multiple partitions to the table
> SHOW PARTITIONS StudentInfo;
partition
---------
age=11
age=12
age=15
age=18
age=20
-- ALTER or CHANGE COLUMNS
> DESCRIBE StudentInfo;
col_name data_type comment
+-----------------------+---------+-------
name string NULL
rollno int NULL
LastName string NULL
DOB timestamp NULL
age int NULL
# Partition Information
# col_name data_type comment
age int NULL
ALTER TABLE StudentInfo ALTER COLUMN name COMMENT "new comment";
--After ALTER or CHANGE COLUMNS
> DESCRIBE StudentInfo;
col_name data_type comment
----------------------- --------- -----------
name string new comment
rollno int NULL
LastName string NULL
DOB timestamp NULL
age int NULL
# Partition Information
# col_name data_type comment
age int NULL
-- RENAME COLUMN
> ALTER TABLE StudentInfo RENAME COLUMN name TO FirstName;
--After RENAME COLUMN
> DESCRIBE StudentInfo;
col_name data_type comment
----------------------- --------- -----------
FirstName string new comment
rollno int NULL
LastName string NULL
DOB timestamp NULL
age int NULL
# Partition Information
# col_name data_type comment
age int NULL
-- Change the file Location
> ALTER TABLE dbx.tab1 PARTITION (a='1', b='2') SET LOCATION '/path/to/part/ways';
-- SET SERDE/ SERDE Properties (DBR only)
> 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 TABLE PROPERTIES
> ALTER TABLE dbx.tab1 SET TBLPROPERTIES ('winner' = 'loser');
-- DROP TABLE PROPERTIES
> ALTER TABLE dbx.tab1 UNSET TBLPROPERTIES ('winner');
-- 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;
-- Applies three tags to the table named `test`.
> ALTER TABLE test SET TAGS ('tag1' = 'val1', 'tag2' = 'val2', 'tag3' = 'val3');
-- Removes three tags from the table named `test`.
> ALTER TABLE test UNSET TAGS ('tag1', 'tag2', 'tag3');
-- 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');
-- Removes three tags from table `main.schema1.test` column `col1`.
> ALTER TABLE main.schema1.test ALTER COLUMN col1 UNSET TAGS ('tag1', 'tag2', 'tag3');
-- Enables predictive optimization for my_table
> ALTER TABLE my_table ENABLE PREDICTIVE OPTIMIZATION;
-- Alter multiple columns in a single statement
-- 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