Remarque
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de vous connecter ou de modifier des répertoires.
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de modifier des répertoires.
S’applique à :
Databricks SQL
Databricks Runtime
Modifie le schéma ou les propriétés d’une table.
La ALTER TABLE commande n’est pas prise en charge pour les tables temporaires. Une erreur est retournée si la ALTER TABLE commande est appliquée à une table temporaire. Si la table est mise en cache, la commande efface les données mises en cache de la table et tous ses dépendants qui y font référence. Le cache est rempli de manière différée lors de l’accès suivant à la table ou aux dépendants.
Sur les tables étrangères, vous pouvez uniquement effectuer ALTER TABLE SET OWNER et ALTER TABLE RENAME TO.
Autorisations requises
Si vous utilisez le catalogue Unity, vous devez avoir MODIFY l’autorisation de :
ALTER COLUMNADD COLUMNDROP COLUMNSET TBLPROPERTIESUNSET TBLPROPERTIESPREDICTIVE OPTIMIZATION
Si vous utilisez le catalogue Unity, vous devez disposer de la propriété ou de l’autorisation MANAGE de :
SET OWNER TO
Toutes les autres opérations nécessitent la propriété de la table.
Syntaxe
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}
Paramètres
-
Identifie la table en cours de modification. Le nom ne doit pas inclure de spécification temporelle ou de spécification d’options. Si la table est introuvable, Azure Databricks génère une erreur TABLE_OR_VIEW_NOT_FOUND.
RENAME TOto_table_nameRenomme la table.
-
Identifie le nouveau nom de la table. Le nom ne doit pas inclure de spécification temporelle ou de spécification d’options.
Pour les tables de catalogue Unity, il
to_table_namedoit se trouver dans le même catalogue quetable_name. Pour les autres tables, leto_table_namedoit se trouver dans le même schéma quetable_name.Si
to_table_namen'est pas qualifié, il est implicitement qualifié avec le schéma actuel.
> ALTER TABLE student RENAME TO student_info;-
-
Ajoute une ou plusieurs colonnes à la table.
Lorsque vous ajoutez une colonne à une table Delta Lake existante, vous ne pouvez pas définir de
DEFAULTvaleur. Toutes les colonnes ajoutées aux tables Delta Lake sont traitées commeNULLpour les lignes existantes. Après avoir ajouté une colonne, vous pouvez éventuellement définir une valeur par défaut pour les nouvelles lignes à l’aideALTER COLUMNde .> 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';
-
Modifie une propriété ou l’emplacement d’une colonne.
> 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 NULLModifiez plusieurs colonnes dans une seule instruction :
-- 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 -
Déposez une ou plusieurs colonnes ou champs dans une table Delta Lake.
-
Renomme une colonne ou un champ dans une table 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
-
Ajoute une contrainte de validation, une contrainte de clé étrangère d’information ou une contrainte de clé primaire d’information à la table.
Les clés étrangères et les clés primaires sont prises en charge seulement pour les tables dans Unity Catalog, et non pour le catalogue
hive_metastore. DEFAULT COLLATIONnom_de_collationS’applique à :
Databricks SQL
Databricks Runtime 16.3 et versions ultérieuresModifie le classement par défaut de la table pour les nouvelles colonnes
STRING. Les colonnes existantes ne sont pas affectées par cette clause. Pour modifier le classement d’une colonne existante, utilisezALTER TABLE ... ALTER COLUMN ... COLLATE collation_name.
-
Supprime une contrainte de clé primaire, de clé étrangère ou de validation dans la table.
DROP FEATURE feature_name [ TRUNCATE HISTORY ]S’applique à :
Databricks Runtime 14.3 LTS et versions ultérieuresLe support hérité pour
DROP FEATUREest disponible à partir de Databricks Runtime 14.3 LTS. Pour obtenir de la documentation sur les fonctionnalités héritées, consultez Les fonctionnalités de table Drop Delta (héritées).S’applique à :
Databricks SQL
Databricks Runtime 16.3 et versions ultérieuresAzure Databricks recommande d’utiliser Databricks Runtime 16.3 et versions ultérieures pour toutes les
DROP FEATUREcommandes, qui remplacent le comportement hérité.Supprime une fonctionnalité d’une table Delta Lake.
La suppression d’une fonctionnalité peut entraîner l’ajout de la fonctionnalité
checkpointProtectionwriter au sein du protocole de table. Pour plus d’informations, consultez Fonctionnalités des tables Delta Drop et les fonctionnalités de table pour la compatibilité du protocole.feature_nameNom d’une fonctionnalité sous la forme d’un littéral
STRINGou d’un identificateur, qui doit être compris par Azure Databricks et pris en charge sur la table.Si la fonctionnalité n’est pas présente dans la table, Azure Databricks déclenche DELTA_FEATURE_DROP_FEATURE_NOT_PRESENT.
HISTORIQUE TRUNCATE
Suppression des fonctionnalités en tronquant l’historique. Cela nécessite un processus en deux étapes :
La suppression des fonctionnalités en tronquant l’historique nécessite un processus en deux étapes :
Le premier appel efface les traces de la fonctionnalité et vous informe de la réussite partielle.
Ensuite, attendez que la période de rétention se termine avant la réexécution de l’instruction pour terminer la suppression complète.
Si vous lancez le deuxième appel trop tôt, Azure Databricks déclenche DELTA_FEATURE_DROP_WAIT_FOR_RETENTION_PERIOD ou DELTA_FEATURE_DROP_HISTORICAL_VERSIONS_EXIST.
Tronquer l’historique des tables limite votre capacité à exécuter DESCRIBE HISTORY et à exécuter des requêtes de voyage dans le temps.
-- 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;-
Ajoute une ou plusieurs partitions à la 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 -- 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 -
Supprime une ou plusieurs partitions de la 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 -
Définit l’emplacement d’une partition.
> ALTER TABLE dbx.tab1 PARTITION (a='1', b='2') SET LOCATION '/path/to/part/ways'; -
Remplace les clés d’une 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 -
Indique à Azure Databricks d’analyser l’emplacement de la table et d’ajouter des fichiers à la table qui ont été ajoutés directement au système de fichiers.
-
S’applique à :
Databricks SQL
Databricks Runtime 12.2 LTS et versions ultérieures
Unity Catalog uniquementPermet d’ajouter une fonction de filtre de lignes à la table. Toutes les requêtes ultérieures de la table reçoivent un sous-ensemble des lignes dans lesquelles la fonction prend la valeur booléenne TRUE. Cela peut être utile à des fins de contrôle d’accès plus précis, où la fonction peut inspecter l’identité et/ou l’appartenance à un groupe de l’utilisateur appelant afin de décider s’il convient de filtrer certaines lignes.
DROP ROW FILTERS’applique à :
Unity Catalog uniquementPermet d’annuler le filtre de colonne d’une table, le cas échéant. Les requêtes futures retourneront toutes les lignes de la table sans aucun filtrage automatique.
-
Définit ou redéfinit une ou plusieurs propriétés définies par l’utilisateur.
> ALTER TABLE dbx.tab1 SET TBLPROPERTIES ('winner' = 'loser'); -
Supprime une ou plusieurs propriétés définies par l’utilisateur.
> ALTER TABLE dbx.tab1 UNSET TBLPROPERTIES ('winner'); SET SERDES’applique à :
Databricks RuntimeSpécifie la classe sérialiseur/désérialiseur (SerDe) utilisée pour lire et écrire des données dans une table de format Hive. Vous pouvez également configurer des propriétés SerDe avec
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 LOCATIONDéplace l’emplacement d’une table.
SET LOCATION pathLOCATION pathpathdoit être un littéralSTRING. Spécifie le nouvel emplacement de la table.Les fichiers situés à l’emplacement d’origine ne seront pas déplacés vers le nouvel emplacement.
[ SET ] OWNER TOprincipalTransfère la propriété de la table vers
principal.S’applique à :
Databricks SQL
Databricks Runtime 11.3 LTS et ultérieurSETest autorisé en tant que mot clé facultatif.SET TAGS ( { tag_name = tag_value } [, ...] )S’applique à :
Databricks SQL
Databricks Runtime 13.3 LTS et versions ultérieuresAppliquer des balises à la table. Vous devez disposer d’une autorisation
APPLY TAGpour ajouter des balises à la table.tag_name
Un
STRINGlittéral. Letag_namedoit être unique dans la colonne ou la table.tag_value
Un
STRINGlittéral.
-- 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 [, ...] )S’applique à :
Databricks SQL
Databricks Runtime 13.3 LTS et versions ultérieuresSupprimer les balises de la table. Vous devez disposer d’une autorisation
APPLY TAGpour supprimer des balises de la table.tag_name
Un
STRINGlittéral. Letag_namedoit être unique dans la colonne ou la table.
-- 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');Clause CLUSTER BY
S’applique à :
Databricks SQL
Databricks Runtime 13.3 LTS et versions ultérieuresAjoute, modifie ou supprime la stratégie de clustering pour une table Delta Lake.
{ ENABLE | DISABLE | INHERIT } PREDICTIVE OPTIMIZATIONS’applique à :
Databricks SQL
Databricks Runtime 12.2 LTS et versions ultérieures
Unity Catalog uniquementModifie la table Delta Lake gérée au paramètre d’optimisation prédictive souhaité.
Par défaut, lorsque des tables sont créées, le comportement est
INHERITsur le schéma.Lorsque l'optimisation prédictive est explicitement activée ou héritée en tant qu'activée, OPTIMIZE et VACUUM seront automatiquement appelés sur la table, selon ce qu’Azure Databricks juge approprié. Pour plus d’informations, consultez Optimisation prédictive pour les tables managées Unity Catalog.
-- Enables predictive optimization for my_table > ALTER TABLE my_table ENABLE PREDICTIVE OPTIMIZATION;
Exemples supplémentaires
Pour des exemples de l'ajout de contraintes et de modification de colonnes dans Delta Lake, consultez
Articles connexes
- ADD CONSTRAINT clause : ajoutez ou supprimez des contraintes de vérification, des clés primaires et des clés étrangères.
- ALTER MATERIALIZED VIEW: Syntaxe pour modifier les vues matérialisées.
- ALTER STREAMING TABLE: Syntaxe de modification des tables de diffusion en continu.
- ALTER TABLE clause ... COLUMN: Syntaxe complète pour ADD, ALTER, DROP et RENAME COLUMN.
- ALTER TABLE … PARTITION: syntaxe complète pour l’ajout, la suppression et le changement de nom des partitions.
- Mettre à jour le schéma de table : renommez ou modifiez les types de colonnes dans une table Delta.