ALTER TABLE (Databricks SQL)

Modifie le schéma ou les propriétés d’une table.

Pour les modifications de type ou le changement de nom des colonnes dans Delta Lake, consultez réécrire les données.

Pour modifier le commentaire sur une table, utilisez COMMNENT sur.

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 la prochaine accès à la table ou aux dépendants.

Syntaxe

ALTER TABLE table_name
   { RENAME clause |
     ADD COLUMN clause |
     ALTER COLUMN clause |
     ADD CONSTRAINT clause |
     DROP CONSTRAINT clause |
     SET LOCATION clause |
     ADD PARTITION clause |
     DROP PARTITION clause |
     RENAME PARTITION clause |
     RECOVER PARTITIONS clause |
     SET TBLPROPERTIES clause |
     UNSET TBLPROPERTIES clause |
     SET LOCATION clause }

Paramètres

  • table_name

    Identifie la table en cours de modification. Le nom ne doit pas inclure une spécification temporelle.

  • Renommer en to_table_name

    Renomme la table en une nouvelle table dans la même base de données.

  • AJOUTER UNE COLONNE

    Cette clause n’est pas prise en charge pour les JDBC sources de données.

    Ajoute une ou plusieurs colonnes à la table, ou des champs à des colonnes existantes dans une table de lac Delta.

    { ADD [COLUMNS | COLUMNS ]
      ( { {column_identifier | field_name} data_type [COMMENT comment] [FIRST | AFTER identifier] } [, ...] ) }
    
    • column_identifier

      Le nom de la colonne à ajouter. Le nom doit être unique dans la table.

      Sauf si FIRST ou AFTER name sont spécifiés, la colonne ou le champ est ajouté à la fin.

    • field_name

      Nom qualifié complet du champ à ajouter à une colonne existante. Tous les composants du chemin d’accès au champ imbriqué doivent exister et le nom de champ lui-même doit être unique.

    • Commentaire de commentaire

      Littéral de chaîne facultatif qui décrit la colonne ou le champ ajouté.

    • FIRST

      Si elle est spécifiée, la colonne est ajoutée en tant que première colonne de la table, ou le champ est ajouté comme premier champ de dans le struct conteneur.

    • APRÈS l' identificateur

      Si elle est spécifiée, la colonne ou le champ est ajouté immédiatement après le champ ou la colonne identifier .

  • MODIFIER LA COLONNE

    Modifie une propriété ou l’emplacement d’une colonne.

    { { ALTER | CHANGE } [COLUMN] { column_identifier | field_name }
      { COMMENT comment |
        { FIRST | AFTER column_identifier } |
        { SET | DROP } NOT NULL } } }
    
    • column_identifier

      Nom de la colonne à modifier.

    • field_name

      Nom qualifié complet du champ à modifier. Tous les composants du chemin d’accès au champ imbriqué doivent exister.

    • Commentaire de commentaire

      Modifie la description de la column_name colonne. comment doit être un littéral de chaîne.

    • IdentificateurFirst ou after

      Déplace la colonne de sa position actuelle vers l’avant ( FIRST ) ou immédiatement AFTERidentifier . Cette clause est prise en charge uniquement si table_name est une table Delta.

    • Set not null ou Drop not null

      Modifie le domaine des valeurs de colonne valides pour exclure les valeurs null SET NOT NULL , ou inclure des valeurs null DROP NOT NULL . Cette option est uniquement prise en charge pour les tables delta Lake. Delta Lake garantit que la contrainte est valide pour toutes les données existantes et nouvelles.

  • Ajouter une contrainte constraint_name la vérification ( condition )

    Ajoute une contrainte CHECK à la table Delta Lake.

    • constraint_name

      Identificateur unique dans la table.

    • VÉRIFICATION ( condition )

      Expression déterministe qui retourne une valeur booléenne.

      conditionpeut être composé de littéraux, d’identificateurs de colonnes dans la table, et de fonctions ou d’opérateurs SQL déterministes intégrés, à l’exception de :

      conditionNe doit pas non plus contenir de condition.

      Pour qu’une contrainte de validation soit satisfaite dans Azure Databricks elle doit avoir la valeur true .

      Delta Lake a vérifié la validité de la contrainte de validation par rapport aux données nouvelles et existantes. Si une ligne existante enfreint la contrainte, une erreur est générée.

  • DROP CONSTRAINT constraint_name

    Supprime une contrainte CHECK de la table Delta Lake.

  • AJOUTER UNE PARTITION

    S’il est spécifié, ajoute une ou plusieurs partitions à la table. L’ajout de partitions n’est pas pris en charge pour Delta Lake tables.

    ADD [IF NOT EXISTS] { PARTITION clause [ LOCATION path ] } [...]
    
    • S’IL N’EXISTE PAS

      clause facultative dirigeant l’SQL Databricks pour ignorer l’instruction si la partition existe déjà.

    • PARTITION, clause

      Partition à ajouter. Les clés de partition doivent correspondre au partitionnement de la table et être associées aux valeurs. Si la partition existe déjà, une erreur est générée, sauf si IF NOT EXISTS a été spécifié.

    • Chemin de l’emplacement

      path doit être un littéral de chaîne qui représente un emplacement facultatif pointant vers la partition.

      Si aucun emplacement n’est spécifié, l’emplacement est dérivé de l’emplacement de la table et des clés de partition.

      Si des fichiers se trouvent à l’emplacement, ils remplissent la partition et doivent être compatibles avec le data_source de la table et ses options.

  • SUPPRIMER LA PARTITION

    Si cette clause est spécifiée, elle supprime une ou plusieurs partitions de la table, en supprimant éventuellement les fichiers aux emplacements des partitions.

    Les tables delta Lake ne prennent pas en charge la suppression de partitions.

    DROP [ IF EXISTS ] PARTITION clause [, ...] [PURGE]
    
    • IF EXISTS

      Lorsque vous spécifiez IF EXISTS Azure Databricks ignore une tentative de suppression de partitions qui n’existent pas. Dans le cas contraire, les partitions non existantes provoquent une erreur.

    • PARTITION, clause

      Spécifie une partition à supprimer. Si la partition n’est que partiellement identifiée, une tranche de partitions est supprimée.

    • PURGE

      Si cette valeur est définie, le catalogue de tables doit supprimer les données de partition en ignorant le dossier de la corbeille, même si le catalogue en a configuré un. L’option s’applique uniquement aux tables managées. Elle est effective uniquement dans les cas suivants :

      Le système de fichiers prend en charge un dossier Trash. Le catalogue a été configuré pour déplacer la partition supprimée dans le dossier Corbeille. Il n’y a aucun dossier Trash dans AWS S3, donc il n’est pas effectif.

      Il n’est pas nécessaire de supprimer manuellement des fichiers après la suppression des partitions.

  • RENOMMER LA PARTITION

    Remplace les clés d’une partition.

    Les tables delta Lake ne prennent pas en charge le changement de nom des partitions.

    from_partition_clause RENAME TO to_partition_clause
    
  • RÉCUPÉRER LES PARTITIONS

    Cette clause ne s’applique pas aux tables delta Lake.

    ordonne à Databricks SQL 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.

  • DÉFINIR TBLPROPERTIES

    Définit une ou plusieurs propriétés définies par l’utilisateur de la table. Les propriétés sont des paires clé-valeur. Si les clés des propriétés existent, les valeurs sont remplacées par les nouvelles valeurs. Si les clés des propriétés n’existent pas, les paires clé-valeur sont ajoutées aux propriétés.

    SET TBLPROPERTIES ( { property_key = property_val } [, ...] )
    
    • property_key

      Clé de la propriété. La clé peut comporter un ou plusieurs identificateurs séparés par un point, ou un littéral de chaîne.

      Les clés de propriété doivent être uniques.

    • property_val

      Nouvelle valeur de la propriété. La valeur doit être une valeur BOOLÉENNE, une chaîne, un entier ou un littéral décimal.

  • UNSET TBLPROPERTIES

    Supprime une ou plusieurs propriétés définies par l’utilisateur de table_name .

    UNSET TBLPROPERTIES [ IF EXISTS ] ( property_key [, ...] )
    
    • IF EXISTS

      Sauf si IF EXISTS est spécifié, une erreur est RAID Si la propriété n’a pas été définie.

    • property_key

      La clé peut comporter un ou plusieurs identificateurs séparés par un point, ou un littéral de chaîne.

      Les clés de propriété doivent être uniques.

  • DÉFINIR L’EMPLACEMENT

    Déplace l’emplacement d’une partition ou d’une table.

    Delta Lake ne prend pas en charge le déplacement de partitions individuelles d’une table du lac Delta.

    [ PARTITION clause ] SET LOCATION path
    
    • PARTITION, clause

      Identifie éventuellement la partition pour laquelle l’emplacement sera modifié. Si vous omettez de nommer une partition Azure Databricks déplace l’emplacement de la table.

    • Chemin de l’emplacement

      path doit être un littéral de chaîne. Spécifie le nouvel emplacement pour la partition ou la table.

      Les fichiers situés à l’emplacement d’origine ne seront pas déplacés vers le nouvel emplacement.

Exemples

Pour obtenir des exemples Delta Lake Add et ALTER COLUMN, consultez

-- RENAME table
> DESC 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
> DESC 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
> DESC 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
> DESC 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
> DESC 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
> DESC 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

-- Change the file Location
> ALTER TABLE dbx.tab1 PARTITION (a='1', b='2') SET LOCATION '/path/to/part/ways'

-- SET TABLE PROPERTIES
> ALTER TABLE dbx.tab1 SET TBLPROPERTIES ('winner' = 'loser');

-- DROP TABLE PROPERTIES
> ALTER TABLE dbx.tab1 UNSET TBLPROPERTIES ('winner');