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.
Untuk perubahan jenis atau mengganti nama kolom di Delta Lake, lihat menulis ulang data.
Untuk mengubah komentar pada tabel atau kolom, Anda juga bisa menggunakan COMMENT ON.
Untuk mengubah STREAMING TABLE
, gunakan ALTER STREAMING TABLE.
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.
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 dapat melakukan ALTER TABLE SET OWNER
dan ALTER TABLE RENAME TO
saja.
Izin yang diperlukan
Jika Anda menggunakan Katalog Unity, Anda harus memiliki izin MODIFY
untuk:
ALTER COLUMN
ADD COLUMN
DROP COLUMN
SET TBLPROPERTIES
UNSET TBLPROPERTIES
- Memodifikasi
PREDICTIVE OPTIMIZATION
Jika Anda menggunakan Katalog Unity, Anda harus memiliki izin atau kepemilikan MANAGE
untuk:
SET OWNER TO
Semua operasi lainnya memerlukan kepemilikan atas tabel.
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 OWNER TO clause |
SET SERDE clause |
SET TAGS clause |
UNSET TAGS clause |
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 TO
to_table_nameMengganti nama tabel.
-
Mengidentifikasi nama tabel baru. Nama tidak boleh menyertakan spesifikasi temporal atau spesifikasi opsi.
Untuk tabel Unity Catalog,
to_table_name
harus berada dalam katalog yang sama dengantable_name
. Untuk tabel lain,to_table_name
harus berada dalam skema yang sama dengantable_name
.Jika
to_table_name
tidak memenuhi syarat, secara implisit memenuhi syarat dengan skema saat ini.
-
-
Menambahkan satu atau beberapa kolom ke tabel.
-
Mengubah properti atau lokasi kolom.
-
Hilangkan satu atau beberapa kolom atau bidang dalam tabel Delta Lake.
-
Mengganti nama kolom atau bidang dalam tabel Delta Lake.
-
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 COLLATION
collation_nameBerlaku untuk:
Databricks SQL
Databricks Runtime 16.3 ke atas
Mengubah pengurutan default tabel untuk kolom
STRING
baru. 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 atas
Dukungan warisan untuk
DROP FEATURE
tersedia 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 atas
Azure Databricks merekomendasikan penggunaan Databricks Runtime 16.3 ke atas untuk semua
DROP FEATURE
perintah, yang menggantikan perilaku warisan.Menghapus fitur tertentu dari sebuah tabel Delta Lake.
Menghapus fitur dapat mengakibatkan penambahan
checkpointProtection
fitur penulis dalam protokol tabel. Untuk informasi selengkapnya, lihat Menghilangkan fitur tabel Delta dan Fitur tabel untuk kompatibilitas protokol.feature_name
Nama fitur dalam bentuk
STRING
literal 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.
-
Menambahkan satu atau beberapa partisi ke tabel.
-
Menghilangkan satu atau beberapa partisi dari tabel.
PARTITION LOKASI SET
Mengatur lokasi partisi.
-
Mengganti kunci partisi tertentu.
-
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 saja
Menambahkan 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 FILTER
Berlaku untuk:
Katalog Unity saja
Menghilangkan 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.
HAPUS PENGATURAN TBLPROPERTIES
Menghapus satu atau beberapa properti yang ditentukan pengguna.
SET LOCATION
Memindahkan lokasi tabel.
SET LOCATION path
LOCATION path
path
harus berupaSTRING
literal. Menentukan lokasi baru untuk tabel.File di lokasi asli tidak akan dipindahkan ke lokasi baru.
[ SET ] OWNER TO
kepala sekolahMentransfer kepemilikan tabel ke
principal
.Berlaku untuk:
Databricks SQL
Databricks Runtime 11.3 LTS dan selanjutnya
SET
diperbolehkan sebagai kata kunci opsional.SET TAGS ( { tag_name = tag_value } [, ...] )
Berlaku untuk:
Databricks SQL
Databricks Runtime 13.3 LTS dan di atasnya
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:
Databricks SQL
Databricks Runtime 13.3 LTS dan di atasnya
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.
-
Berlaku untuk:
Databricks SQL
Databricks Runtime 13.3 LTS dan di atasnya
Menambahkan, mengubah, atau menghilangkan strategi pengklusteran untuk tabel Delta Lake.
{ ENABLE | DISABLE | INHERIT } PREDICTIVE OPTIMIZATION
Berlaku untuk:
Databricks SQL
Databricks Runtime 12.2 LTS ke atas
Unity Catalog saja
Mengubah tabel Delta Lake terkelola ke pengaturan pengoptimalan prediktif yang diinginkan.
Secara bawaan, saat tabel dibuat, perilakunya adalah untuk
INHERIT
dari 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.
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;
-- 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