Megosztás a következőn keresztül:


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 típusmódosításokkal vagy oszlopok átnevezésével kapcsolatos információkért a Delta Lake-ben lásd , az adatok újraírásával kapcsolatosan pedig.

Ha módosítani szeretné a megjegyzést egy táblán vagy oszlopon, COMMENT ONis használhatja.

Streamelési táblázat vagy materializált nézet módosításához használja a ALTER STREAMING TABLE vagy a ALTER MATERIALIZED VIEW elemeket.

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.

Megjegyzé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 oszlop NULL lesz kezelve a meglévő sorok esetében. 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 ön csak ALTER TABLE SET OWNER és ALTER TABLE RENAME TOvégezhet el.

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
  • módosít 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.

  • HOZZÁAD COLUMN

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

  • MÓDOSÍT COLUMN

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

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

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

  • HOZZÁAD PARTITION

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

  • LEEJT PARTITION

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

  • PARTITION ... SET HELYSZÍN

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

  • ÁTNEVEZÉS PARTITION

    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.

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

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

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

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

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:

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

-- Alter multiple columns in a single statement
-- 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