ALTER TABLE (Databricks SQL)

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

A delta lake-ben végrehajtott típusváltozásokkal vagy oszlopok átírásával kapcsolatos lásd: adatok átírása.

Egy tábla megjegyzésének módosítása a COMMNENT ON használatával.

Ha a tábla gyorsítótárazva van, a parancs törli a tábla gyorsítótárazott adatait és az összes rá hivatkozó függő adatot. A gyorsítótárat a rendszer lazán tölti fel, amikor legközelebb hozzáfér a táblához vagy a függőkhez.

Szintaxis

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

  • table_name

    Azonosítja a módosított táblát. A név nem tartalmazhat historikus specifikációt.

  • NEVEZZE ÁT A TO_TABLE_NAME

    Átnevezi a táblát egy új táblára ugyanabban az adatbázisban.

  • OSZLOP HOZZÁADÁSA

    Ez a záradék adatforrások esetén JDBC nem támogatott.

    Hozzáad egy vagy több oszlopot a táblához, vagy mezőket a Delta Lake-tábla meglévő oszlopaihoz.

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

      A hozzáadható oszlop neve. A névnek egyedinek kell lennie a táblán belül.

      Hacsak nincs megadva a vagy a , a rendszer hozzáfűzi az oszlopot vagy mezőt FIRSTAFTER name a véghez.

    • field_name

      A meglévő oszlophoz hozzáadható mező teljes neve. A beágyazott mezőhöz vezető útvonal összes összetevőnek léteznie kell, és magának a mezőnek egyedinek kell lennie.

    • MEGJEGYZÉS MEGJEGYZÉSE

      Egy nem kötelező SZTRING literál, amely leírja a hozzáadott oszlopot vagy mezőt.

    • FIRST

      Ha meg van adva, az oszlop a tábla első oszlopaként lesz hozzáadva, vagy a mező lesz hozzáadva a strukturálat első mezőjéhez.

    • AFTER-azonosító

      Ha meg van adva, az oszlop vagy mező közvetlenül a mező vagy oszlop után lesz identifier hozzáadva.

  • ALTER COLUMN

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

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

      A módosítva lévő oszlop neve.

    • field_name

      A módosítható mező teljes neve. A beágyazott mezőhöz vezető útvonal összes összetevőnek léteznie kell.

    • MEGJEGYZÉS MEGJEGYZÉSE

      Módosítja az oszlop column_name leírását. comment SZTRING konstansnak kell lennie.

    • FIRST vagyAFTER azonosító

      Áthelyezi az oszlopot az aktuális pozíciójából az elsőre ( FIRST ), vagy azonnal a AFTERidentifier helyére. Ez a záradék csak akkor támogatott, table_name ha Delta-tábla.

    • NEM NULL VAGY DROPNOT NULL ÉRTÉK BEÁLLÍTÁSA

      Úgy módosítja az érvényes oszlopértékek tartományát, hogy kizárja a null SET NOT NULL értékeket, vagy null értékeket DROP NOT NULL tartalmaz. Ez a lehetőség csak Delta Lake-táblák esetén támogatott. A Delta Lake biztosítja, hogy a korlátozás minden meglévő és új adatra érvényes legyen.

  • ADD CONSTRAINT constraint_name CHECK ( condition )

    Egy ellenőrző korlátozást ad hozzá a Delta Lake-táblához.

    • constraint_name

      A táblán belül egyedi azonosító.

    • CHECK ( feltétel )

      Egy determinisztikus kifejezés, amely logikai értékeket ad vissza.

      conditionA konstansokból, a táblán belüli oszlopazonosítókból, valamint determinisztikus, beépített függvényekből SQL és operátorokból áll, kivéve:

      Nem condition tartalmazhat condition

      Ahhoz, hogy a CHECK megkötés teljesülése Azure Databricks a értéket kell true kiértékelnie.

      A Delta Lake ellenőrizte az ellenőrző korlátozás érvényességét az új és a meglévő adatokon is. Ha egy meglévő sor megsérti a korlátozást, a rendszer hibát jelez.

  • DROP CONSTRAINT constraint_name

    Eltávolít egy ellenőrző korlátozást a Delta Lake-táblából.

  • PARTÍCIÓ HOZZÁADÁSA

    Ha meg van adva, egy vagy több partíciót ad hozzá a táblához. A Delta Lake-táblák nem támogatják a partíciók hozzáadását.

    ADD [IF NOT EXISTS] { PARTITION clause [ LOCATION path ] } [...]
    
    • HA NEM LÉTEZIK

      Egy nem kötelező záradék, amely arra SQL, hogy hagyja figyelmen kívül az utasítást, ha a partíció már létezik.

    • PARTITION záradék

      Hozzáadható partíció. A partíciókulcsnak egyeznie kell a tábla particionálásával, és értékekkel kell társítva lennie. Ha a partíció már létezik, hiba történik, hacsak IF NOT EXISTS nincs megadva.

    • HELY elérési útja

      path Sztring literálnak kell lennie, amely egy nem kötelező, a partícióra mutató helyet képvisel.

      Ha nincs megadva hely, a hely a tábla helyéről és a partíciókulcsokból lesz származtatva.

      Ha vannak fájlok a helyen, ahol feltöltik a partíciót, és kompatibilisnek kell lenniük a tábla és annak data_source beállításaival.

  • DROP PARTITION

    Ha meg van adva, ez a záradék egy vagy több partíciót töröl a táblából, opcionálisan törölve a partíciók helyeiről származó fájlokat.

    A Delta Lake-táblák nem támogatják a partíciók elejtét.

    DROP [ IF EXISTS ] PARTITION clause [, ...] [PURGE]
    
    • HA LÉTEZIK

      Ha megadja a Azure Databricks figyelmen kívül hagyja a nem létező partíciók IF EXISTS eldobása kísérletét. Ellenkező esetben a nem meglévő partíciók hibát okoznak.

    • PARTITION záradék

      Egy eldobott partíciót ad meg. Ha a partíció csak részlegesen van azonosítva, a partíciók egy szelete el lesz dobva.

    • PURGE

      Ha be van állítva, a táblakatalógusnak el kell távolítania a partícióadatokat úgy, hogy kihagyja a Kuka mappát, még akkor is, ha a katalógus konfigurált egyet. A beállítás csak felügyelt táblákra vonatkozik. Csak akkor hatékony, ha:

      A fájlrendszer támogatja a Kuka mappát. A katalógus úgy van konfigurálva, hogy az eldobott partíciót a Kuka mappába költözteti. Az AWS S3-ban nincs Kuka mappa, ezért nem hatékony.

      A partíciók törlése után nem szükséges manuálisan törölni a fájlokat.

  • PARTÍCIÓ ÁTNEVEZÉSE

    Lecseréli egy partíció kulcsait.

    A Delta Lake-táblák nem támogatják a partíciók újrananacionálását.

    from_partition_clause RENAME TO to_partition_clause
    
  • PARTÍCIÓK HELYREÁLLÍTÁSA

    Ez a záradék nem vonatkozik a Delta Lake-táblákra.

    Arra utasítja a Databricks SQL, hogy vizsgálja meg a tábla helyét, és adjon hozzá minden olyan fájlt a táblához, amely közvetlenül a fájlrendszerhez lett hozzáadva.

  • TBLPROPERTIES BEÁLLÍTÁSA

    Beállítja a tábla egy vagy több felhasználó által definiált tulajdonságát. A tulajdonságok kulcs-érték párok. Ha a tulajdonságok kulcsai léteznek, a rendszer az új értékekre cseréli az értékeket. Ha a tulajdonságok kulcsai nem léteznek, a kulcs-érték párok hozzáadódik a tulajdonságokhoz.

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

      A tulajdonságkulcs. A kulcs egy vagy több, pontokkal elválasztott azonosítóból vagy sztring-literálból állhat.

      A tulajdonságkulcsnak egyedinek kell lennie.

    • property_val

      A tulajdonság új értéke. Az értéknek LOGIKAI, SZTRING, EGÉSZ SZÁM vagy DECIMÁLIS literális értéknek kell lennie.

  • UNSET TBLPROPERTIES

    Eltávolítja a egy vagy több felhasználó által definiált table_name tulajdonságát.

    UNSET TBLPROPERTIES [ IF EXISTS ] ( property_key [, ...] )
    
    • HA LÉTEZIK

      Ha nincs megadva, a rendszer a tulajdonság hiányában raided hibát IF EXISTS ad vissza.

    • property_key

      A kulcs egy vagy több, pontokkal elválasztott azonosítóból vagy sztring-literálból állhat.

      A tulajdonságkulcsnak egyedinek kell lennie.

  • HELY BEÁLLÍTÁSA

    Áthelyezi egy partíció vagy tábla helyét.

    A Delta Lake nem támogatja a Delta Lake-tábla egyes partícióinak áthelyezését.

    [ PARTITION clause ] SET LOCATION path
    
    • PARTITION záradék

      Opcionálisan azonosítja azt a partíciót, amelynek a helyét módosítani fogja. Ha kihagyja egy partíció elnevezését, Azure Databricks áthelyezi a tábla helyét.

    • HELY elérési útja

      path SZTRING konstansnak kell lennie. Megadja a partíció vagy tábla új helyét.

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

Példák

A Delta Lake oszloppéadékok hozzáadásáról és megváltoztatásáról lásd:

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