Delen via


ALTER TABLE

Van toepassing op: vinkje als ja aan Databricks SQL vinkje als ja aan Databricks Runtime

Hiermee wijzigt u het schema of de eigenschappen van een tabel.

Zie de gegevens herschrijven voor het wijzigen van typen of het wijzigen van de naam van kolommen in Delta Lake.

Als u de opmerking in een tabel wilt wijzigen, kunt u ook COMMENT ON gebruiken.

Als u een STREAMING TABLEwilt wijzigen, gebruikt u ALTER STREAMING TABLE.

Als de tabel in de cache is opgeslagen, worden met de opdracht gegevens in de cache van de tabel en alle afhankelijke gegevens gewist die ernaar verwijzen. De cache wordt lazily gevuld wanneer de tabel of de afhankelijke items de volgende keer worden geopend.

Notitie

Wanneer u een kolom aan een bestaande Delta-tabel toevoegt, kunt u geen DEFAULT waarde definiëren. Alle kolommen die aan Delta-tabellen worden toegevoegd, worden behandeld als NULL voor bestaande rijen. Nadat u een kolom hebt toegevoegd, kunt u desgewenst een standaardwaarde voor de kolom definiëren, maar dit wordt alleen toegepast op nieuwe rijen die in de tabel zijn ingevoegd. Gebruik de volgende syntaxis:

ALTER TABLE table_name ALTER COLUMN column_name SET DEFAULT default_expression

In refererende tabellen kunt u alleen ALTER TABLE SET OWNER ALTER TABLE RENAME TOen .

Vereiste machtigingen

Als u Unity Catalog gebruikt, moet u gemachtigd zijn MODIFY voor het volgende:

  • ALTER COLUMN
  • KOLOM TOEVOEGEN
  • DROP COLUMN
  • SET TBLPROPERTIES
  • NIET-INSTELLEN TBLPROPERTIES
  • VOORSPELLENDE OPTIMALISATIE wijzigen

Voor alle andere bewerkingen is het eigendom van de tabel vereist.

Syntaxis

ALTER TABLE table_name
   { RENAME TO clause |
     ADD COLUMN clause |
     ALTER COLUMN clause |
     DROP COLUMN clause |
     RENAME COLUMN 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}

Parameters

  • table_name

    Hiermee wordt de tabel geïdentificeerd die wordt gewijzigd. De naam mag geen tijdelijke specificatie of optiesspecificatie bevatten. Als de tabel niet kan worden gevonden, genereert Azure Databricks een TABLE_OR_VIEW_NOT_FOUND fout.

  • RENAME TOto_table_name

    Wijzigt de naam van de tabel in hetzelfde schema.

    • to_table_name

      Hiermee wordt de naam van de nieuwe tabel geïdentificeerd. De naam mag geen tijdelijke specificatie of optiesspecificatie bevatten.

  • KOLOM TOEVOEGEN

    Hiermee voegt u een of meer kolommen toe aan de tabel.

  • ALTER COLUMN

    Hiermee wijzigt u een eigenschap of de locatie van een kolom.

  • DROP COLUMN

    Verwijder een of meer kolommen of velden in een Delta Lake-tabel.

  • KOLOMNAAM WIJZIGEN

    Wijzigt de naam van een kolom of veld in een Delta Lake-tabel.

  • BEPERKING TOEVOEGEN

    Hiermee voegt u een controlebeperking, informatieve refererende sleutelbeperking of informatieve primaire-sleutelbeperking toe aan de tabel.

    Refererende sleutels en primaire sleutels worden alleen ondersteund voor tabellen in Unity Catalog, niet voor de hive_metastore catalogus.

  • DROP CONSTRAINT

    Hiermee wordt een primaire sleutel, refererende sleutel of controlebeperking uit de tabel verwijderd.

  • DROP FEATURE feature_name [ TRUNCATE HISTORY ]

    Van toepassing op: vinkje als ja aan Databricks SQL vinkje als ja aan Databricks Runtime 14.1 en hoger

    Hiermee verwijdert u een functie uit een Delta Lake-tabel.

    Het verwijderen van functies die van invloed zijn op zowel lezers als schrijvers, vereist een proces in twee fasen:

    Zie Wat zijn tabelfuncties? voor meer informatie.

    • feature_name

      De naam van een functie in de vorm van een STRING letterlijke of id, die moet worden begrepen door Azure Databricks en moet worden ondersteund in de tabel.

      Ondersteund feature_names zijn:

      • 'deletionVectors' of deletionvectors
        • v2Checkpoint of v2checkpoint

      Als de functie niet aanwezig is in de tabel, verhoogt Azure Databricks DELTA_FEATURE_DROP_FEATURE_NOT_PRESENT.

    • AFKAPPEN VAN GESCHIEDENIS

      U kunt eventueel na 24 uur de tweede fase van het verwijderen van een functie reader-plus-writer initiëren door de tabelgeschiedenis af te kapen tot wanneer de aanroepopdracht werd uitgevoerd.

      Als u de tabelgeschiedenis afkapt, kunt u DESCRIBE HISTORY uitvoeren en query's voor tijdreizen uitvoeren.

  • PARTITIE TOEVOEGEN

    Voegt een of meer partities toe aan de tabel.

  • DROP PARTITION

    Hiermee verwijdert u een of meer partities uit de tabel.

  • VERDELEN... LOCATIE INSTELLEN

    Hiermee stelt u de locatie van een partitie in.

  • NAAM VAN PARTITIE WIJZIGEN

    Vervangt de sleutels van een partitie.

  • PARTITIES HERSTELLEN

    Geeft Azure Databricks opdracht om de locatie van de tabel te scannen en bestanden toe te voegen aan de tabel die rechtstreeks aan het bestandssysteem zijn toegevoegd.

  • SETCOMPONENT RIJFILTER

    Van toepassing op:vinkje als ja aan Alleen Databricks SQL vinkje als ja aan Databricks Runtime 12.2 LTS en hoger vinkje als ja aan dan Unity Catalog

    Hiermee voegt u een rijfilterfunctie toe aan de tabel. Alle volgende query's voor de tabel ontvangen een subset van de rijen waarin de functie booleaanse WAAR oplevert. Dit kan handig zijn voor verfijnde toegangsbeheerdoeleinden, waarbij de functie de identiteit of groepslidmaatschappen van de aanroepende gebruiker kan inspecteren om te bepalen of bepaalde rijen moeten worden gefilterd.

  • DROP ROW FILTER

    Van toepassing op: vinkje als ja aan alleen Unity Catalog

    Hiermee wordt het rijfilter uit de tabel verwijderd, indien van toepassing. Toekomstige query's retourneren alle rijen uit de tabel zonder automatisch filteren.

  • SET TBLPROPERTIES

    Hiermee stelt u een of meer door de gebruiker gedefinieerde eigenschappen in of stelt u deze opnieuw in.

  • NIET-INSTELLEN TBLPROPERTIES

    Hiermee verwijdert u een of meer door de gebruiker gedefinieerde eigenschappen.

  • SET LOCATION

    Hiermee verplaatst u de locatie van een tabel.

    SET LOCATION path
    
    • LOCATION path

      path moet een STRING letterlijke naam zijn. Hiermee geeft u de nieuwe locatie voor de tabel.

      Bestanden op de oorspronkelijke locatie worden niet verplaatst naar de nieuwe locatie.

  • [ SET ] OWNER TOprincipal

    Hiermee wordt het eigendom van de tabel overgedragen naar principal.

    Van toepassing op: vinkje als ja aan Databricks SQL vinkje als ja aan Databricks Runtime 11.3 LTS en hoger

    SET is toegestaan als een optioneel trefwoord.

  • SET TAGS ( { tag_name = tag_value } [, ...] )

    Van toepassing op: vinkje als ja aan Databricks SQL vinkje als ja aan Databricks Runtime 13.3 LTS en hoger

    Tags toepassen op de tabel. U moet gemachtigd zijn APPLY TAG om tags toe te voegen aan de tabel.

    • tag_name

      Een letterlijke .STRING De tag_name naam moet uniek zijn binnen de tabel of kolom.

    • tag_value

      Een letterlijke .STRING

  • UNSET TAGS ( tag_name [, ...] )

    Van toepassing op: vinkje als ja aan Databricks SQL vinkje als ja aan Databricks Runtime 13.3 LTS en hoger

    Verwijder tags uit de tabel. U moet gemachtigd zijn APPLY TAG om tags uit de tabel te verwijderen.

    • tag_name

      Een letterlijke .STRING De tag_name naam moet uniek zijn binnen de tabel of kolom.

  • CLUSTER BY-component

    Van toepassing op: vinkje als ja aan Databricks SQL vinkje als ja aan Databricks Runtime 13.3 LTS en hoger

    Hiermee wordt de clusterstrategie voor een Delta Lake-tabel toegevoegd, gewijzigd of verwijderd.

  • { ENABLE | DISABLE | INHERIT } PREDICTIVE OPTIMIZATION

    Van toepassing op:vinkje als ja aan Alleen Databricks SQL vinkje als ja aan Databricks Runtime 12.2 LTS en hoger vinkje als ja aan dan Unity Catalog

    Belangrijk

    Deze functie is beschikbaar als openbare preview.

    Hiermee wijzigt u de beheerde Delta Lake-tabel in de gewenste instelling voor voorspellende optimalisatie.

    Wanneer tabellen worden gemaakt, is het gedrag standaard afkomstig INHERIT van het schema.

    Wanneer voorspellende optimalisatie expliciet is ingeschakeld of overgenomen als OPTIMIZE en VACUUM , wordt automatisch aangeroepen in de tabel, zoals geschikt wordt geacht door Azure Databricks. Zie voor meer informatie: Voorspellende optimalisatie voor beheerde tabellen in Unity Catalog.

Voorbeelden

Zie voor Delta Lake beperkingen toevoegen en kolomvoorbeelden wijzigen

-- 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;