ALTER TABLE

A következőkre vonatkozik:jelölje be az igennel jelölt jelölőnégyzetet Databricks SQL jelölje be az igennel jelölt jelölőnégyzetet Databricks Runtime

Módosítja egy tábla sémáját vagy tulajdonságait.

A Delta Lake-beli típusmódosítások vagy oszlopok átnevezéséért lásd az adatok újraírását.

Ha módosítani szeretné a megjegyzést egy táblán, a COMMENT ON parancsot is használhatja.

A módosításhoz használja az STREAMING TABLEALTER STREAMING TABLE parancsot.

Ha a tábla gyorsítótárazva van, a parancs törli a tábla gyorsítótárazott adatait és az arra hivatkozó összes függőt. A gyorsítótár lazán meg lesz töltve, amikor a tábla vagy a függők legközelebb hozzáférnek.

Feljegyzés

Ha oszlopot ad hozzá egy meglévő Delta-táblához, nem definiálhat DEFAULT értéket. A Delta-táblákhoz hozzáadott összes oszlopot a rendszer a meglévő sorokhoz hasonlóan NULL kezeli. Az oszlop hozzáadása után megadhat egy alapértelmezett értéket az oszlophoz, de ez csak a táblába beszúrt új sorokra vonatkozik. Alkalmazza a következő szintaxist:

ALTER TABLE table_name ALTER COLUMN column_name SET DEFAULT default_expression

Idegen táblákon csak és .ALTER TABLE SET OWNERALTER TABLE RENAME TO

Szükséges engedélyek

A Unity-katalógus használata esetén a következő jogosultsággal kell rendelkeznie MODIFY :

  • OSZLOP MÓDOSÍTÁSA
  • OSZLOP HOZZÁADÁSA
  • DROP COLUMN
  • Standard kiadás T TBLPROPERTIES
  • UN STANDARD KIADÁS T TBLPROPERTIES
  • PREDIKTÍV OPTIMALIZÁLÁS módosítása

Minden más művelethez a tábla tulajdonjoga szükséges.

Syntax

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}

Paraméterek

  • table_name

    Azonosítja a módosítandó táblát. A név nem tartalmazhat időbeli specifikációt. Ha a tábla nem található, az Azure Databricks TABLE_OR_VIEW_NOT_FOUND hibát jelez.

  • RENAME TOto_table_name

    Átnevezi a táblát ugyanazon a sémán belül.

    • to_table_name

      Azonosítja az új táblanevet. A név nem tartalmazhat időbeli specifikációt.

  • OSZLOP HOZZÁADÁSA

    Egy vagy több oszlopot ad hozzá a táblához.

  • OSZLOP MÓDOSÍTÁSA

    Módosít egy tulajdonságot vagy egy oszlop helyét.

  • DROP COLUMN

    Egy vagy több oszlop vagy mező elvetése egy Delta Lake-táblában.

  • OSZLOP ÁTNEVEZÉSE

    Egy Delta Lake-tábla oszlopának vagy mezőjének átnevezése.

  • KORLÁTOZÁS HOZZÁADÁSA

    Ellenőrző kényszert, információs idegenkulcs-kényszert vagy információs elsődlegeskulcs-kényszert ad hozzá a táblához.

    Az idegen kulcsok és az elsődleges kulcsok csak a Unity Katalógusban lévő táblák esetében támogatottak, a hive_metastore katalógusban nem.

  • DROP CONSTRAINT

    Elvet egy elsődleges kulcsot, idegen kulcsot vagy ellenőrzési kényszert a táblából.

  • DROP FEATURE feature_name [ TRUNCATE HISTORY ]

    A következőkre vonatkozik:jelölje be az igennel jelölt jelölőnégyzetet Databricks SQL jelölje be az igennel jelölt jelölőnégyzetet Databricks Runtime 14.1 vagy újabb

    Eltávolít egy funkciót egy Delta Lake-táblából.

    Az olvasókat és írókat egyaránt érintő funkciók eltávolításához két fázisú folyamat szükséges:

    • Az első hívás törli a funkció nyomait, és tájékoztatja a részleges sikerről.

    • Ezután meg kell várnia, amíg a megőrzési időszak véget ér, és újra végre kell hajtania az utasítást az eltávolítás befejezéséhez.

      Ha túl korán kezdeményezi a második meghívást, az Azure Databricks DELTA_FEATURE_DROP_WAIT_FOR_RETENTION_PERIOD vagy DELTA_FEATURE_DROP_HISTORICAL_VERSIONS_EXIST.

    További részletekért lásd: Mik azok a táblafunkciók?

    • feature_name

      Egy szolgáltatás neve konstans vagy azonosító formájábanSTRING, amelyet az Azure Databricksnek kell értelmeznie, és támogatnia kell a táblában.

      feature_names Támogatottak a következők:

      • "deletionVectors" vagy deletionvectors
        • "v2Checkpoint" vagy v2checkpoint

      Ha a szolgáltatás nem szerepel a táblázatban, az Azure Databricks DELTA_FEATURE_DROP_FEATURE_NOT_PRE Standard kiadás NT-t emel.

    • CSONKOLÁSI ELŐZMÉNYEK

      Opcionálisan lehetővé teszi, hogy elindítsa az olvasó plusz író funkció 24 óra utáni elvetésének második fázisát úgy, hogy csonkolja a táblaelőzményeket a meghívási parancs végrehajtásakor.

      A táblaelőzmények csonkolása korlátozza a LEÍRÁS ELŐZMÉNYEINEK végrehajtását és az időutazási lekérdezések végrehajtását.

  • PARTÍCIÓ HOZZÁADÁSA

    Egy vagy több partíciót ad hozzá a táblához.

  • DROP PARTITION

    Egy vagy több partíció elvetése a táblából.

  • PARTÍCIÓ... Standard kiadás T LOCATION

    Beállítja egy partíció helyét.

  • PARTÍCIÓ ÁTNEVEZÉSE

    Lecseréli egy partíció kulcsait.

  • PARTÍCIÓK HELYREÁLLÍTÁSA

    Utasítja az Azure Databrickset, hogy vizsgálja meg a tábla helyét, és adja hozzá a közvetlenül a fájlrendszerhez hozzáadott fájlokat a táblához.

  • SETROW FILTER záradék

    A következőkre vonatkozik:jelölje be az igennel jelölt jelölőnégyzetet Databricks SQL jelölje be az igennel jelölt jelölőnégyzetet Databricks Runtime 12.2 LTS és a Unity Catalog felett csak jelölje be az igennel jelölt jelölőnégyzetet

    Fontos

    Ez a funkció a nyilvános előzetes verzióban érhető el.

    Sorszűrő függvényt ad hozzá a táblához. A tábla minden jövőbeli lekérdezése megkapja annak a sornak a részhalmazát, amelynek a függvénye igaz logikai értéket ad ki. Ez hasznos lehet részletes hozzáférés-vezérlési célokra, amelyek során a függvény megvizsgálhatja a meghívó felhasználó identitását és/vagy csoporttagságát, hogy eldöntse, szűr-e bizonyos sorokat.

  • DROP ROW FILTER

    Csak a Következőre vonatkozik:jelölje be az igennel jelölt jelölőnégyzetet Unity Catalog

    Fontos

    Ez a funkció a nyilvános előzetes verzióban érhető el.

    Ha van ilyen, eltávolítja a sorszűrőt a táblából. A jövőbeli lekérdezések automatikus szűrés nélkül visszaadják a tábla összes sorát.

  • Standard kiadás T TBLPROPERTIES

    Beállít vagy alaphelyzetbe állít egy vagy több felhasználó által definiált tulajdonságot.

  • UN STANDARD KIADÁS T TBLPROPERTIES

    Eltávolít egy vagy több felhasználó által definiált tulajdonságot.

  • SET LOCATION

    Áthelyezi a táblázat helyét.

    SET LOCATION path
    
    • LOCATION path

      path literálnak kell lennie STRING . Megadja a tábla új helyét.

      Az eredeti helyen lévő fájlok nem lesznek áthelyezve az új helyre.

  • [ SET ] OWNER TO

    A tábla tulajdonjogát a következőre principaltovábbítja: .

    A következőkre vonatkozik:jelölje be az igennel jelölt jelölőnégyzetet Databricks SQL jelölje be az igennel jelölt jelölőnégyzetet Databricks Runtime 11.3 LTS és újabb

    SET választható kulcsszóként engedélyezett.

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

    A következőkre vonatkozik:jelölje be az igennel jelölt jelölőnégyzetet Databricks SQL jelölje be az igennel jelölt jelölőnégyzetet Databricks Runtime 13.3 LTS és újabb

    Címkék alkalmazása a táblára. Rendelkeznie apply_tag kell engedéllyel ahhoz, hogy címkéket vegyen fel a táblába.

    • tag_name

      Egy literál STRING. A tag_name táblának vagy oszlopnak egyedinek kell lennie.

    • tag_value

      Egy literál STRING.

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

    A következőkre vonatkozik:jelölje be az igennel jelölt jelölőnégyzetet Databricks SQL jelölje be az igennel jelölt jelölőnégyzetet Databricks Runtime 13.3 LTS és újabb

    Távolítsa el a címkéket a táblából. Rendelkeznie apply_tag kell engedéllyel ahhoz, hogy eltávolítsa a címkéket a táblából.

    • tag_name

      Egy literál STRING. A tag_name táblának vagy oszlopnak egyedinek kell lennie.

  • CLUSTER BY záradék

    A következőkre vonatkozik:jelölje be az igennel jelölt jelölőnégyzetet Databricks SQL jelölje be az igennel jelölt jelölőnégyzetet Databricks Runtime 13.3 LTS és újabb

    Hozzáadja, módosítja vagy elveti egy Delta Lake-tábla fürtözési stratégiáját.

  • { ENABLE | DISABLE | INHERIT } PREDICTIVE OPTIMIZATION

    A következőkre vonatkozik:jelölje be az igennel jelölt jelölőnégyzetet Databricks SQL jelölje be az igennel jelölt jelölőnégyzetet Databricks Runtime 12.2 LTS és a Unity Catalog felett csak jelölje be az igennel jelölt jelölőnégyzetet

    Fontos

    Ez a funkció a nyilvános előzetes verzióban érhető el.

    A felügyelt Delta Lake-táblát a kívánt prediktív optimalizálási beállításra módosítja.

    A táblák létrehozásakor alapértelmezés szerint a viselkedés INHERIT a sémából történik.

    Ha a prediktív optimalizálás explicit módon engedélyezve van, vagy engedélyezett optimalizálásként öröklődik, és a RENDSZER automatikusan meghívja a vákuumot a táblára az Azure Databricks által megfelelőnek ítélt módon. További részletek: A Delta Lake prediktív optimalizálása.

Példák

A Delta Lake-hez adjon hozzá korlátozásokat, és módosítsa az oszlopokat, lásd:

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