ALTER TABLE

Berlaku untuk:centang ditandai ya Databricks SQL centang ditandai ya Databricks Runtime

Mengubah skema atau properti tabel.

Untuk jenis perubahan atau penggantian nama kolom di Delta Lake, lihat regenerasi data.

Untuk mengubah komentar pada tabel, Anda juga bisa menggunakan COMMENT ON.

Untuk mengubah STREAMING TABLE, gunakan ALTER STREAMING TABLE.

Jika tabel di-cache, perintah akan membersihkan data cache tabel dan semua dependen yang merujuknya. Cache akan dengan malas diisi ketika tabel atau dependen diakses di lain waktu.

Catatan

Saat Anda menambahkan kolom ke tabel Delta yang sudah ada, Anda tidak dapat menentukan DEFAULT nilai. Semua kolom yang ditambahkan ke tabel Delta diperlakukan sebagai NULL untuk baris yang sudah ada. Setelah menambahkan kolom, Anda dapat secara opsional menentukan nilai default untuk kolom, tetapi ini hanya diterapkan untuk baris baru yang disisipkan ke dalam tabel. Gunakan sintaks berikut:

ALTER TABLE table_name ALTER COLUMN column_name SET DEFAULT default_expression

Pada tabel asing, Anda hanya ALTER TABLE SET OWNER dapat melakukan dan ALTER TABLE RENAME TO.

Izin yang diperlukan

Jika Anda menggunakan Katalog Unity, Anda harus memiliki izin MODIFY untuk:

  • KOLOM ALTER
  • TAMBAHKAN KOLOM
  • DROP COLUMN
  • ATUR TBLPROPERTIES
  • HAPUS PENGATURAN TBLPROPERTIES
  • ubah PENGOPTIMALAN PREDIKTIF

Semua operasi lain memerlukan kepemilikan tabel.

Sintaks

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}

Parameter

  • table_name

    Mengidentifikasi tabel yang diubah. Nama tidak boleh menyertakan spesifikasi temporal. Jika tabel tidak dapat ditemukan, Azure Databricks menimbulkan kesalahan TABLE_OR_VIEW_NOT_FOUND .

  • RENAME TOto_table_name

    Mengganti nama tabel dalam skema yang sama.

  • TAMBAHKAN KOLOM

    Menambahkan satu atau beberapa kolom ke tabel.

  • KOLOM ALTER

    Mengubah properti atau lokasi kolom.

  • DROP COLUMN

    Hilangkan satu atau beberapa kolom atau bidang dalam tabel Delta Lake.

  • GANTI NAMA KOLOM

    Mengganti nama kolom atau bidang dalam tabel Delta Lake.

  • ADD CONSTRAINT

    Menambahkan batasan pemeriksaan, batasan kunci asing informasi, atau batasan kunci utama informasi ke tabel.

    Kunci asing dan kunci primer hanya didukung untuk tabel di Katalog Unity, bukan hive_metastore katalog.

  • DROP CONSTRAINT

    Menghilangkan kunci primer, kunci asing, atau batasan pemeriksaan dari tabel.

  • DROP FEATURE feature_name [ TRUNCATE HISTORY ]

    Berlaku untuk:centang ditandai ya Databricks SQL centang ditandai ya Databricks Runtime 14.1 ke atas

    Menghapus fitur dari tabel Delta Lake.

    Penghapusan fitur yang memengaruhi pembaca dan penulis memerlukan proses dua tahap:

    Lihat Apa itu fitur tabel? untuk detailnya.

    • feature_name

      Nama fitur dalam bentuk STRING literal atau pengidentifikasi, yang harus dipahami oleh Azure Databricks dan didukung pada tabel.

      Didukung feature_names adalah:

      • 'deletionVectors' atau deletionvectors
        • 'v2Checkpoint' atau v2checkpoint

      Jika fitur tidak ada dalam tabel Azure Databricks akan menaikkan DELTA_FEATURE_DROP_FEATURE_NOT_PRESENT.

    • POTONG RIWAYAT

      Secara opsional memungkinkan Anda memulai fase kedua menjatuhkan fitur reader-plus-writer setelah 24 jam dengan memotong riwayat tabel ke ketika perintah pemanggilan dijalankan.

      Memotong riwayat tabel membatasi kemampuan Anda untuk melakukan RIWAYAT DESCRIBE dan menjalankan kueri perjalanan waktu.

  • TAMBAHKAN PARTISI

    Menambahkan satu atau beberapa partisi ke tabel.

  • HILANGKAN PARTISI

    Menghilangkan satu atau beberapa partisi dari tabel.

  • PARTISI... SET LOKASI

    Mengatur lokasi partisi.

  • GANTI NAMA PARTISI

    Mengganti kunci partisi.

  • PULIHKAN PARTISI

    Menginstruksikan Azure Databricks untuk memindai lokasi tabel dan menambahkan file apa pun ke tabel yang telah ditambahkan langsung ke sistem file.

  • SETKlausa FILTER BARIS

    Berlaku untuk:centang ditandai ya Databricks SQL centang ditandai ya Databricks Runtime 12.2 LTS dan di atas centang ditandai ya Unity Catalog saja

    Penting

    Fitur ini ada di Pratinjau Publik.

    Menambahkan fungsi filter baris ke tabel. Semua kueri di masa mendatang dari tabel tersebut akan menerima subset barisnya yang dievaluasi fungsinya ke TRUE boolean. Ini dapat berguna untuk tujuan kontrol akses terperinci di mana fungsi dapat memeriksa identitas dan/atau keanggotaan grup pengguna yang memanggil untuk memutuskan apakah akan memfilter baris tertentu.

  • DROP ROW FILTER

    Berlaku untuk:centang ditandai ya Hanya Katalog Unity

    Penting

    Fitur ini ada di Pratinjau Publik.

    Menghilangkan filter baris dari tabel, jika ada. Kueri di masa mendatang akan mengembalikan semua baris dari tabel tanpa pemfilteran otomatis.

  • ATUR TBLPROPERTIES

    Mengatur satu atau beberapa properti yang ditentukan pengguna.

  • HAPUS PENGATURAN TBLPROPERTIES

    Menghapus satu atau beberapa properti yang ditentukan pengguna.

  • SET LOCATION

    Memindahkan lokasi tabel.

    SET LOCATION path
    
    • LOCATION path

      path harus harfiah STRING . Menentukan lokasi baru untuk tabel.

      File di lokasi asli tidak akan dipindahkan ke lokasi baru.

  • [ SET ] OWNER TOprincipal

    Mentransfer kepemilikan tabel ke principal.

    Berlaku untuk:centang ditandai ya Databricks SQL centang ditandai ya Databricks Runtime 11.3 LTS ke atas

    SET diperbolehkan sebagai kata kunci opsional.

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

    Berlaku untuk:centang ditandai ya Databricks SQL centang ditandai ya Databricks Runtime 13.3 LTS ke atas

    Terapkan tag ke tabel. Anda harus memiliki apply_tag izin untuk menambahkan tag ke tabel.

    • tag_name

      Harfiah STRING. tag_name harus unik dalam tabel atau kolom.

    • tag_value

      Harfiah STRING.

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

    Berlaku untuk:centang ditandai ya Databricks SQL centang ditandai ya Databricks Runtime 13.3 LTS ke atas

    Menghapus tag dari tabel. Anda harus memiliki apply_tag izin untuk menghapus tag dari tabel.

    • tag_name

      Harfiah STRING. tag_name harus unik dalam tabel atau kolom.

  • Klausul CLUSTER BY

    Berlaku untuk:centang ditandai ya Databricks SQL centang ditandai ya Databricks Runtime 13.3 LTS ke atas

    Menambahkan, mengubah, atau menghilangkan strategi pengklusteran untuk tabel Delta Lake.

  • { ENABLE | DISABLE | INHERIT } PREDICTIVE OPTIMIZATION

    Berlaku untuk:centang ditandai ya Databricks SQL centang ditandai ya Databricks Runtime 12.2 LTS dan di atas centang ditandai ya Unity Catalog saja

    Penting

    Fitur ini ada di Pratinjau Publik.

    Mengubah tabel Delta Lake terkelola ke pengaturan pengoptimalan prediktif yang diinginkan.

    Secara default, saat tabel dibuat, perilakunya adalah dari INHERIT skema.

    Ketika pengoptimalan prediktif diaktifkan secara eksplisit atau diwariskan sebagai OPTIMIZE dan VACUUM yang diaktifkan akan secara otomatis dipanggil pada tabel yang dianggap sesuai oleh Azure Databricks. Untuk detail selengkapnya lihat: Pengoptimalan prediktif untuk Delta Lake.

Contoh

Untuk Delta Lake menambahkan batasan dan mengubah contoh kolom, lihat

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