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 ALTER TABLE parancs ideiglenes táblák esetében nem támogatott. A rendszer hibát ad vissza, ha a ALTER TABLE parancsot egy ideiglenes táblára alkalmazza a rendszer. 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 kényelmesen töltődik, amikor a táblához vagy a függőkhöz legközelebb hozzáférnek.

Idegen táblákon csak a műveletet és a .ALTER TABLE SET OWNERALTER TABLE RENAME TO

Szükséges engedélyek

Ha a Unity Katalógust használja, MODIFY engedéllyel kell rendelkeznie a következőhöz:

  • ALTER COLUMN
  • ADD COLUMN
  • DROP COLUMN
  • SET TBLPROPERTIES
  • UNSET TBLPROPERTIES
  • PREDICTIVE OPTIMIZATION

Ha a Unity Katalógust használja, MANAGE engedéllyel vagy tulajdonjoggal kell rendelkeznie a következőhöz:

  • SET OWNER TO

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

Szintaxis

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éterek

  • table_name

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

  • RENAME TO to_table_name

    Átnevezi a táblát.

    • to_table_name

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

      A Unity Catalog-táblák esetében a to_table_name katalógusnak ugyanabban a katalógusban kell lennie, mint a table_name. Más táblák esetében a to_table_name ugyanabban a sémában kell legyen, mint a table_name.

      Ha to_table_name nincs minősítve, akkor az aktuális sémával van implicit módon minősítve.

    > ALTER TABLE student RENAME TO student_info;
    
  • HOZZÁAD COLUMN

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

    Ha oszlopot ad hozzá egy meglévő Delta Lake-táblához, nem definiálhat DEFAULT értéket. A Delta Lake-táblákhoz hozzáadott összes oszlop a meglévő sorokhoz hasonlóan NULL lesz kezelve. Oszlop hozzáadása után igény szerint megadhat egy alapértelmezett értéket az új sorokhoz a használatával ALTER COLUMN.

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

  • MÓDOSÍT COLUMN

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

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

    Több oszlop módosítása egyetlen utasításban:

    -- 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
    
  • LEEJT COLUMN

    Egy vagy több oszlop vagy mező eltávolítása egy Delta Lake-táblából.

  • ÁTNEVEZÉS COLUMN

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

    > 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
    

  • ADD CONSTRAINT

    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.

  • DEFAULT COLLATION kolláció_név

    A következőkre vonatkozik:igen Databricks SQL igen Databricks Runtime 16.3 és újabb

    Módosítja az új STRING oszlopok táblázatának alapértelmezett rendezést. A meglévő oszlopokat ez a záradék nem érinti. Meglévő oszlop rendezésének módosításához használja a ALTER TABLE ... ALTER COLUMN ... COLLATE collation_name.

  • 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 ]

    Alkalmazható:igen bejelölve a Databricks Runtime 14.3 LTS és újabb verziókra

    A Databricks Runtime 14.3 LTS-ben érhető el a régebbi rendszerek támogatása. Az örökölt funkciók dokumentációját lásd: Drop Delta table features (legacy).

    A következőkre vonatkozik:igen Databricks SQL igen Databricks Runtime 16.3 és újabb

  • Az Azure Databricks a Databricks Runtime 16.3-at és újabb verzióját javasolja az összes DROP FEATURE parancshoz, amely felváltja az örökölt viselkedést.

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

    Ha eltávolít egy funkciót, az az író funkció hozzáadását checkpointProtection eredményezheti a táblaprotokollban. További információért lásd: Drop Delta táblázat jellemzői és Táblázat jellemzői a protokoll kompatibilitásért.

    • feature_name

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

      Ha a funkció nem szerepel a táblában, az Azure Databricks hibát jelez: DELTA_FEATURE_DROP_FEATURE_NOT_PRESENT.

    • ELŐZMÉNYEK CSONKOLÁSA

      A funkciók eltávolítása az előzmények csonkolásával. Ehhez két fázisú folyamat szükséges:

Az előzmények csonkolása által a funkciók eltávolításához két lépés szükséges:

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

  • Ezután várjon, amíg a megőrzési időszak véget ér, mielőtt újra végrehajtja 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 megjeleníti a DELTA_FEATURE_DROP_WAIT_FOR_RETENTION_PERIOD vagy a DELTA_FEATURE_DROP_HISTORICAL_VERSIONS_EXIST hibaüzenetet.

    A táblaelőzmények csonkolása korlátozza a képességét arra, hogy DESCRIBE HISTORY-t hajtson végre és időutazási lekérdezéseket végezzen.

    -- 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;
    
  • HOZZÁAD PARTITION

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

    > 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
    
  • LEEJT PARTITION

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

    > 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
    
  • PARTITION ... SET HELYSZÍN

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

    > ALTER TABLE dbx.tab1 PARTITION (a='1', b='2') SET LOCATION '/path/to/part/ways';
    
  • ÁTNEVEZÉS PARTITION

    Lecseréli egy partíció kulcsait.

    > 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
    
  • 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.

  • SET ROW FILTER záradék

    A következőkre vonatkozik:pipával jelölve, igen Databricks SQL pipával jelölve, igen Databricks Runtime 12.2 LTS és újabb pipával jelölve, igen Csak Unity Catalog

    Sorszűrő függvényt ad hozzá a táblához. A tábla minden további lekérdezése megkapja azoknak a soroknak a részhalmazát, ahol a függvény logikai értéke igaz. Ez hasznos lehet részletes hozzáférés-vezérlési célokra, ahol a függvény megvizsgálhatja a meghívást hívó felhasználó identitását vagy csoporttagságát annak megállapításához, hogy szűrjön-e bizonyos sorokat.

  • DROP ROW FILTER

    A következőkre vonatkozik:bejelölve, igen csak a Unity Catalog esetében

    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.

  • SET TBLPROPERTIES

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

    > ALTER TABLE dbx.tab1 SET TBLPROPERTIES ('winner' = 'loser');
    
  • UNSET TBLPROPERTIES

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

    > ALTER TABLE dbx.tab1 UNSET TBLPROPERTIES ('winner');
    
  • SET SERDE

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

    Megadja a Hive formátumú táblában lévő adatok olvasásához és írásához használt szerializáló/deszerializáló (SerDe) osztályt. A SerDe-tulajdonságokat WITH SERDEPROPERTIESkonfigurálhatja a .

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

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

    SET LOCATION path
    
    • LOCATION path

      path egy literál kell, hogy legyen STRING. Megadja a tábla új helyét.

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

  • [ SET ] OWNER TO igazgató

    A tábla tulajdonjogát átkerül principal-hoz.

    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:igennel jelölve Databricks SQL igennel jelölve Databricks Runtime 13.3 LTS és újabb

    Címkék alkalmazása a táblára. A táblához címkék hozzáadásához APPLY TAG engedéllyel kell rendelkeznie.

    • tag_name

      Egy szó szerinti STRING. A tag_name egyedinek kell lennie a táblában vagy oszlopban.

    • tag_value

      Egy szó szerinti STRING.

    -- 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 [, ...] )

    A következőkre vonatkozik:igennel jelölve Databricks SQL igennel jelölve Databricks Runtime 13.3 LTS és újabb

    Távolítsa el a címkéket a táblából. A címkék táblából való eltávolításához APPLY TAG engedéllyel kell rendelkeznie.

    • tag_name

      Egy szó szerinti STRING. A tag_name egyedinek kell lennie a táblában vagy oszlopban.

    -- 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');
    
  • CLUSTER BY záradék

    A következőkre vonatkozik:igennel jelölve Databricks SQL igennel jelölve Databricks Runtime 13.3 LTS és újabb

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

  • { ENABLE | DISABLE | INHERIT } PREDICTIVE OPTIMIZATION

    A következőkre vonatkozik:pipával jelölve, igen Databricks SQL pipával jelölve, igen Databricks Runtime 12.2 LTS és újabb pipával jelölve, igen Csak Unity Catalog

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

    Alapértelmezés szerint, amikor táblákat hoznak létre, az eljárás a sémából INHERIT.

    Ha a prediktív optimalizálás engedélyezve van, vagy engedélyezésként öröklődik, az Azure Databricks a OPTIMIZE-t és a VACUUM-et automatikusan meghívja a táblázatra, amikor azt megfelelőnek ítéli. További részletekért lásd: A Unity Catalog által felügyelt táblák prediktív optimalizálása.

    -- Enables predictive optimization for my_table
    > ALTER TABLE my_table ENABLE PREDICTIVE OPTIMIZATION;
    

További példák

Delta Lake esetén a korlátozások hozzáadásához és az oszlopok módosításához tekintse meg: