Catatan
Akses ke halaman ini memerlukan otorisasi. Anda dapat mencoba masuk atau mengubah direktori.
Akses ke halaman ini memerlukan otorisasi. Anda dapat mencoba mengubah direktori.
Berlaku untuk:
Databricks SQL
Databricks Runtime
Mengubah skema atau properti tabel.
Tabel sementara mendukung ALTER TABLE ... SET TBLPROPERTIES dan ALTER TABLE ... UNSET TBLPROPERTIES dalam komputasi tanpa server, Databricks Runtime 18.2 ke atas, dan Databricks SQL 2026.15 ke atas. Klausa lain ALTER TABLE tidak didukung pada tabel sementara dan mengembalikan kesalahan. Jika tabel di-cache, perintah menghapus data tabel yang di-cache dan semua dependennya yang merujuk ke tabel tersebut. Cache akan diisi secara bertahap ketika tabel atau dependen diakses saat berikutnya.
Tabel asing mendukung seperangkat ALTER TABLE operasi terbatas, termasuk ALTER TABLE SET OWNER, ALTER TABLE RENAME TO, ALTER TABLE SET MANAGED { MOVE | COPY }, dan ALTER TABLE SET EXTERNAL.
SET MANAGED dan SET EXTERNAL memerlukan tabel asing yang difederasi menggunakan Hive metastore dan Glue Federation, serta SET MANAGED juga memerlukan format Delta Lake. Lihat Tabel asing dan Konversi tabel asing ke tabel Katalog Unity eksternal.
Izin yang diperlukan
Jika Anda menggunakan Katalog Unity, Anda harus memiliki izin MODIFY untuk:
ALTER COLUMNADD COLUMNDROP COLUMNSET TBLPROPERTIESUNSET TBLPROPERTIES
Jika Anda menggunakan Katalog Unity, Anda harus memiliki izin atau kepemilikan MANAGE untuk:
SET OWNER TOPREDICTIVE OPTIMIZATION
Semua operasi lain memerlukan kepemilikan atas tabel, termasuk SET MANAGED dan UNSET MANAGED.
SET EXTERNALdan bentuk meja asing juga SET MANAGED memerlukan CREATE izin pada .EXTERNAL LOCATION Untuk prasyarat lengkap untuk setiap konversi, lihat Prasyarat dan Prasyarat.
Sintaks
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 EXTERNAL clause |
SET MANAGED clause |
UNSET MANAGED clause |
SET OWNER TO clause |
SET TAGS clause |
UNSET TAGS clause |
CLUSTER BY clause |
REPLACE PARTITIONED BY WITH CLUSTER BY clause |
PREDICTIVE OPTIMIZATION clause}
Parameter-parameternya
-
Mengidentifikasi tabel yang diubah. Nama tidak boleh menyertakan spesifikasi temporal atau spesifikasi opsi. Jika tabel tidak dapat ditemukan, Azure Databricks menimbulkan kesalahan TABLE_OR_VIEW_NOT_FOUND .
RENAME TOto_table_nameMengganti nama tabel.
-
Mengidentifikasi nama tabel baru. Nama tidak boleh menyertakan spesifikasi temporal atau spesifikasi opsi.
Untuk tabel Unity Catalog,
to_table_nameharus berada dalam katalog yang sama dengantable_name. Untuk tabel lain,to_table_nameharus berada dalam skema yang sama dengantable_name.Jika
to_table_nametidak memenuhi syarat, secara implisit memenuhi syarat dengan skema saat ini.
> ALTER TABLE student RENAME TO student_info;-
-
Menambahkan satu atau beberapa kolom ke tabel.
Saat Anda menambahkan kolom ke tabel Delta Lake yang sudah ada, Anda tidak dapat menentukan
DEFAULTnilai. Semua kolom yang ditambahkan ke tabel Delta Lake diperlakukan sebagaiNULLuntuk baris yang sudah ada. Setelah menambahkan kolom, Anda dapat secara opsional menentukan nilai default untuk baris baru menggunakanALTER 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';
-
Mengubah properti atau lokasi kolom.
> 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 NULLUbah beberapa kolom dalam satu pernyataan:
-- 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 -
Hilangkan satu atau beberapa kolom atau bidang dalam tabel Delta Lake.
-
Mengganti nama kolom atau bidang dalam tabel Delta Lake.
> 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
-
Menambahkan batasan cek, batasan kunci asing informasi sekunder, atau batasan kunci utama informasi sekunder ke tabel.
Kunci asing dan kunci primer hanya didukung untuk tabel di Katalog Unity, bukan katalog
hive_metastore. DEFAULT COLLATIONcollation_nameBerlaku untuk:
Databricks SQL
Databricks Runtime 16.3 ke atasMengubah pengurutan default tabel untuk kolom
STRINGbaru. Kolom yang ada tidak terpengaruh oleh klausa ini. Untuk mengubah kolatasi kolom yang ada, gunakanALTER TABLE ... ALTER COLUMN ... COLLATE collation_name.
-
Menghilangkan kunci primer, kunci asing, atau batasan pemeriksaan dari tabel.
DROP FEATURE feature_name [ TRUNCATE HISTORY ]Berlaku untuk:
Databricks Runtime 14.3 LTS ke atasDukungan warisan untuk
DROP FEATUREtersedia mulai dari Databricks Runtime 14.3 LTS. Untuk dokumentasi fungsionalitas warisan, lihat Menghilangkan fitur tabel Delta (warisan).Berlaku untuk:
Databricks SQL
Databricks Runtime 16.3 ke atasAzure Databricks merekomendasikan penggunaan Databricks Runtime 16.3 ke atas untuk semua
DROP FEATUREperintah, yang menggantikan perilaku warisan.Menghapus fitur tertentu dari sebuah tabel Delta Lake.
Menghapus fitur dapat mengakibatkan penambahan
checkpointProtectionfitur penulis dalam protokol tabel. Untuk informasi selengkapnya, lihat Menghilangkan fitur tabel Delta dan Versi protokol dan fitur tabel.feature_nameNama fitur dalam bentuk
STRINGliteral atau pengidentifikasi, yang harus dipahami oleh Azure Databricks dan didukung pada tabel.Jika fitur tidak ada dalam tabel, Azure Databricks akan menghasilkan DELTA_FEATURE_DROP_FEATURE_NOT_PRESENT.
POTONG RIWAYAT
Penghapusan fitur dengan memotong riwayat. Ini memerlukan proses dua tahap:
Penghapusan fitur dengan memotong riwayat memerlukan proses dua langkah:
Pemanggilan pertama menghapus jejak fitur dan memberi tahu Anda tentang keberhasilan parsial.
Kemudian, tunggu hingga periode retensi berakhir sebelum menjalankan kembali pernyataan untuk menyelesaikan penghapusan.
Jika Anda memulai pemanggilan kedua terlalu dini, Azure Databricks mengeluarkan DELTA_FEATURE_DROP_WAIT_FOR_RETENTION_PERIOD atau DELTA_FEATURE_DROP_HISTORICAL_VERSIONS_EXIST.
Memotong riwayat tabel membatasi kemampuan Anda untuk melakukan fungsi DESCRIBE HISTORY dan menjalankan kueri penjelajahan waktu.
-- 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;-
Menambahkan satu atau beberapa partisi ke tabel.
> 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 -
Menghilangkan satu atau beberapa partisi dari tabel.
> 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 LOKASI SET
Mengatur lokasi partisi.
> ALTER TABLE dbx.tab1 PARTITION (a='1', b='2') SET LOCATION '/path/to/part/ways';-
Mengganti kunci partisi tertentu.
> 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 -
Menginstruksikan Azure Databricks untuk memindai lokasi tabel dan menambahkan file apa pun ke tabel yang telah ditambahkan langsung ke sistem file.
-
Berlaku untuk:
Databricks SQL
Databricks Runtime 12.2 LTS ke atas
Unity Catalog sajaMenambahkan fungsi filter baris ke tabel. Semua kueri berikutnya ke tabel menerima subset baris di mana fungsi dievaluasi menjadi TRUE boolean. Ini dapat berguna untuk tujuan kontrol akses menurun di mana fungsi dapat memeriksa identitas atau keanggotaan grup pengguna yang memanggil untuk menentukan apakah akan memfilter baris tertentu.
DROP ROW FILTERBerlaku untuk:
Katalog Unity sajaMenghilangkan filter baris dari tabel, jika ada. Kueri di masa mendatang akan mengembalikan semua baris dari tabel tanpa pemfilteran otomatis.
TBLPROPERTIES Mengatur satu atau beberapa properti yang ditentukan pengguna.
> ALTER TABLE dbx.tab1 SET TBLPROPERTIES ('winner' = 'loser');HAPUS PENGATURAN TBLPROPERTIES
Menghapus satu atau beberapa properti yang ditentukan pengguna.
> ALTER TABLE dbx.tab1 UNSET TBLPROPERTIES ('winner');SET SERDEBerlaku untuk:
Databricks RuntimeMenentukan kelas serializer/deserializer (SerDe) yang digunakan untuk membaca dan menulis data dalam tabel format Apache Hive. Anda juga dapat mengonfigurasi properti SerDe dengan
WITH SERDEPROPERTIES.> 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 LOCATIONMemindahkan lokasi tabel.
SET LOCATION pathLOCATION pathpathharus berupaSTRINGliteral. Menentukan lokasi baru untuk tabel.File di lokasi asli tidak akan dipindahkan ke lokasi baru.
SET EXTERNAL [ DRY RUN ]Berlaku untuk:
Databricks Runtime 17.3 ke atas
Unity Catalog sajaMengonversi tabel asing menjadi tabel eksternal Unity Catalog, mempertahankan riwayat dan konfigurasi tabel, termasuk nama, pengaturan, izin, dan tampilan. Didukung hanya pada tabel asing yang difederasi menggunakan Hive metastore dan Glue Federation.
Memerlukan
OWNERizin atauMANAGEpada tabel danCREATEizin padaEXTERNAL LOCATION.Untuk membatalkan konversi, jatuhkan tabel. Azure Databricks menggabungkannya kembali sebagai tabel asing selama sinkronisasi katalog berikutnya.
DRY RUNMemeriksa apakah tabel sumber dapat dikonversi tanpa mengonversinya. Perintah mengembalikan
DRY_RUN_SUCCESSjika tabel dapat dikonversi.
Untuk prasyarat dan panduan spesifik format, lihat Konversi tabel asing ke tabel Unity Catalog eksternal.
-- Check whether a foreign table can be converted > ALTER TABLE hms_federated_catalog.my_schema.my_table SET EXTERNAL DRY RUN; -- Convert a foreign table to an external table > ALTER TABLE hms_federated_catalog.my_schema.my_table SET EXTERNAL;
SET MANAGEDBerlaku untuk: tanda
Databricks Runtime 17.3 LTS dan di atasnya
hanya Unity CatalogMengonversi tabel Delta Lake eksternal atau asing Unity Catalog menjadi tabel terkelola Unity Catalog. Konversi mempertahankan nama tabel, pengaturan, izin, tampilan, dan riwayat.
Tabel eksternal dan asing menggunakan bentuk klausa yang berbeda, seperti yang ditunjukkan dalam sintaks berikut:
SET MANAGED [ TRUNCATE UNIFORM HISTORY ] -- external tables SET MANAGED { MOVE | COPY } -- foreign tablesUntuk tabel eksternal, hilangkan dan
MOVECOPY. Jika Anda memasukkan salah satunya, Azure Databricks menaikkan DELTA_ALTER_TABLE_SET_MANAGED_UNSUPPORTED_COPY_MOVE_SYNTAX.Untuk tabel asing, tentukan salah satu
MOVEatauCOPY. Jika Anda menghilangkan keduanya, Azure Databricks akan meningkatkan DELTA_ALTER_TABLE_SET_MANAGED_COPY_OR_MOVE_REQUIRED. Untuk memilih antara dua bentuk, lihat Pilih perintah yang benar untuk tabel sumber Anda.TRUNCATE UNIFORM HISTORYBerlaku untuk tabel eksternal yang mengaktifkan pembacaan Apache Iceberg . Jika tabel mengaktifkan bacaan Iceberg dan Anda menghilangkan opsi ini, Azure Databricks akan muncul DELTA_ALTER_TABLE_SET_MANAGED_DOES_NOT_SUPPORT_UNIFORM_ICEBERG.
TRUNCATE UNIFORM HISTORYmemotong sejarah UniForm Iceberg dan tidak menghapus sejarah Delta Lake. Trunci menyebabkan waktu singkat membaca dan menulis Iceberg.MOVEMengonversi tabel asing menjadi terkelola dan menonaktifkan akses ke tabel sumber di katalog eksternal. Setelah konversi, akses melalui katalog eksternal dan akses berbasis jalur gagal, sehingga semua pembaca dan penulis harus menggunakan namespace Unity Catalog.
COPYMengonversi tabel asing menjadi dikelola tanpa memodifikasi atau menonaktifkan akses ke tabel sumber di katalog eksternal. Konversi menyalin data ke lokasi penyimpanan terkelola, sehingga membuat dua salinan data yang terpisah. Anda bertanggung jawab untuk menonaktifkan bacaan dan penulisan ke tabel sumber serta memigrasikan beban kerja ke tabel yang dikelola.
Untuk prasyarat, estimasi waktu henti, dan pemecahan masalah, lihat Konversi tabel Delta Lake eksternal atau asing menjadi tabel yang dikelola Unity Catalog.
-- Convert an external table > ALTER TABLE main.default.my_external_table SET MANAGED; -- Convert an external table that has Iceberg reads enabled > ALTER TABLE main.default.my_external_table SET MANAGED TRUNCATE UNIFORM HISTORY; -- Convert a foreign table and disable access to the source table > ALTER TABLE hms_federated_catalog.my_schema.my_table SET MANAGED MOVE;UNSET MANAGEDBerlaku untuk: tanda
Databricks Runtime 17.3 LTS dan di atasnya
hanya Unity CatalogMembuat tabel yang dikonversi dengan
SET MANAGEDkembali ke tabel eksternal dengan memperbarui metadata tabel agar mengarah ke lokasi eksternal asli. Azure Databricks mempertahankan penulisan yang dilakukan ke lokasi yang dikelola setelah konversi. Untuk tabel eksternal yang dikonversi, Anda dapat melakukan rollback dalam waktu 14 hari setelah konversi.UNSET MANAGED [ TRUNCATE UNIFORM HISTORY ]TRUNCATE UNIFORM HISTORYBerlaku untuk tabel yang mengaktifkan pembacaan Iceberg. Jika tabel mengaktifkan bacaan Iceberg dan Anda menghilangkan opsi ini, Azure Databricks akan muncul DELTA_ALTER_TABLE_UNSET_MANAGED_DOES_NOT_SUPPORT_UNIFORM.
Commit yang dibuat antara konversi dan rollback mendukung perjalanan waktu berdasarkan versi, tetapi tidak berdasarkan timestamp.
Untuk menggulung tabel asing yang dikonversi dengan
MOVEtabel kembali ke asing, jalankanUNSET MANAGEDlalu hapus tabel eksternal yang dihasilkan, yang akan menggabungkannya kembali saat sinkronisasi katalog berikutnya. Tabel asing yang dikonversi denganCOPYtidak memerlukanUNSET MANAGED, karena konversi meninggalkan tabel sumber tanpa modifikasi.Warning
Jika Anda mengonversi tabel asing dengan
MOVE, jangan hapus tabel yang dikelola sebelum menjalankanUNSET MANAGED. Membuangnya terlebih dahulu dapat menyebabkan kehilangan data atau ketidakkonsistenan.Untuk instruksi rollback lengkap, lihat Roll back a managed table conversion.
-- Roll a converted managed table back to an external table > ALTER TABLE main.default.my_managed_table UNSET MANAGED;[ SET ] OWNER TOkepala sekolahMentransfer kepemilikan tabel ke
principal.Berlaku untuk:
Databricks SQL
Databricks Runtime 11.3 LTS dan selanjutnyaSETdiperbolehkan sebagai kata kunci opsional.Note
Mengubah pemilik tidak tersedia pada himpunan data yang dikelola oleh alur ruang kerja.
SET TAGS ( { tag_name = tag_value } [, ...] )Berlaku untuk:
Databricks SQL
Databricks Runtime 13.3 LTS dan di atasnyaTerapkan tag ke tabel. Anda harus memiliki
APPLY TAGizin untuk menambahkan tag ke tabel.tag_name
Harfiah
STRING.tag_nameharus unik dalam tabel atau kolom.tag_value
Harfiah
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 [, ...] )Berlaku untuk:
Databricks SQL
Databricks Runtime 13.3 LTS dan di atasnyaMenghapus tag dari tabel. Anda harus memiliki
APPLY TAGizin untuk menghapus tag dari tabel.tag_name
Harfiah
STRING.tag_nameharus unik dalam tabel atau kolom.
-- 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');-
Berlaku untuk:
Databricks SQL
Databricks Runtime 13.3 LTS dan di atasnyaMenambahkan, mengubah, atau menghilangkan strategi pengklusteran untuk tabel Delta Lake.
REPLACE PARTITIONED BY WITH CLUSTER BY [( <clustering_columns> ) | AUTO]Berlaku untuk:
Databricks SQL
Databricks Runtime 18.1 ke atasMengonversi tabel Delta Lake yang dipartisi yang ada menjadi pengklusteran cairan, dengan waktu henti pembaca dan penulis minimal. Klausa
CLUSTER BYmenerima kolom pengklusteran eksplisit,AUTOuntuk mendelegasikan pemilihan kunci ke pengoptimalan prediktif, atau dapat dihilangkan untuk menggunakan kolom partisi yang ada.Lihat Mengonversi tabel yang dipartisi menjadi pengklusteran cairan.
{ ENABLE | DISABLE | INHERIT } PREDICTIVE OPTIMIZATIONBerlaku untuk:
Databricks SQL
Databricks Runtime 12.2 LTS ke atas
Unity Catalog sajaMengubah tabel Delta Lake terkelola ke pengaturan pengoptimalan prediktif yang diinginkan.
Secara bawaan, saat tabel dibuat, perilakunya adalah untuk
INHERITdari skema.Ketika pengoptimalan prediktif diaktifkan secara eksplisit atau diwarisi sebagai aktif, maka OPTIMIZE dan VACUUM akan secara otomatis dipanggil pada tabel sesuai keputusan dari Azure Databricks. Untuk detail selengkapnya lihat: Pengoptimalan prediktif untuk tabel terkelola Unity Catalog.
-- Enables predictive optimization for my_table > ALTER TABLE my_table ENABLE PREDICTIVE OPTIMIZATION;
Contoh tambahan
Untuk Delta Lake menambahkan batasan dan mengubah contoh kolom, lihat
Artikel terkait
- ADD CONSTRAINT klausul: Menambahkan atau menghilangkan batasan pemeriksaan, kunci primer, dan kunci asing.
- ALTER MATERIALIZED VIEW: Sintaks untuk mengubah tampilan materialisasi.
- ALTER STREAMING TABLE: Sintaks untuk mengubah tabel streaming.
- ALTER TABLE ... COLUMN klausa: Sintaks penuh untuk ADD, ALTER, DROP, dan RENAME COLUMN.
- ALTER TABLE ... PARTITION: Sintaks penuh untuk menambahkan, menjatuhkan, dan mengganti nama partisi.
- Memperbarui skema tabel dengan evolusi skema: Mengganti nama atau mengubah jenis kolom dalam tabel Delta.
-
Konversi tabel Delta Lake eksternal atau asing menjadi tabel yang dikelola Unity Catalog: Prasyarat, estimasi waktu henti, dan rollback untuk
SET MANAGEDdanUNSET MANAGED. -
Konversi tabel asing ke tabel Unity Catalog eksternal: Prasyarat dan panduan khusus format untuk
SET EXTERNAL.