ALTER TABLE

Berlaku untuk:ya dengan tanda centang Databricks SQL ya dengan tanda centang Databricks Runtime

Mengubah skema atau properti tabel.

Perintah ALTER TABLE tidak didukung untuk tabel sementara. Kesalahan dikembalikan jika ALTER TABLE perintah diterapkan ke tabel sementara. 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.

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

Izin yang diperlukan

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

  • ALTER COLUMN
  • ADD COLUMN
  • DROP COLUMN
  • SET TBLPROPERTIES
  • UNSET TBLPROPERTIES
  • 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

  • table_name

    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_name

    Mengganti nama tabel.

    • to_table_name

      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 dengan table_name. Untuk tabel lain, to_table_name harus berada dalam skema yang sama dengan table_name.

      Jika to_table_name tidak memenuhi syarat, secara implisit memenuhi syarat dengan skema saat ini.

    > ALTER TABLE student RENAME TO student_info;
    
  • TAMBAH COLUMN

    Menambahkan satu atau beberapa kolom ke tabel.

    Saat Anda menambahkan kolom ke tabel Delta Lake yang sudah ada, Anda tidak dapat menentukan DEFAULT nilai. Semua kolom yang ditambahkan ke tabel Delta Lake diperlakukan sebagai NULL untuk baris yang sudah ada. Setelah menambahkan kolom, Anda dapat secara opsional menentukan nilai default untuk baris baru menggunakan ALTER 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 COLUMN

    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        NULL
    

    Ubah 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
    
  • MENJATUHKAN COLUMN

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

  • UBAH NAMA COLUMN

    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
    

  • ADD CONSTRAINT

    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_name

    Berlaku untuk:dicentang ya Databricks SQL dicentang ya 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, gunakan ALTER TABLE ... ALTER COLUMN ... COLLATE collation_name.

  • DROP CONSTRAINT

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

  • DROP FEATURE feature_name [ TRUNCATE HISTORY ]

    Berlaku untuk:check ditandai ya 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:dicentang ya Databricks SQL dicentang ya 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.

    -- 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;
    
  • TAMBAH PARTITION

    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
    
  • MENJATUHKAN PARTITION

    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';
    
  • UBAH NAMA PARTITION

    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
    
  • PULIHKAN PARTISI

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

  • SET ROW FILTER Klausul

    Berlaku untuk:ya ditandai Databricks SQL ya ditandai Databricks Runtime 12.2 LTS ke atas ya ditandai 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:centang ditandai ya 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.

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

    Berlaku untuk:centang ditandai ya Databricks Runtime

    Menentukan 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 LOCATION

    Memindahkan lokasi tabel.

    SET LOCATION path
    
    • LOCATION path

      path harus berupa STRING literal. Menentukan lokasi baru untuk tabel.

      File di lokasi asli tidak akan dipindahkan ke lokasi baru.

  • [ SET ] OWNER TO kepala sekolah

    Mentransfer kepemilikan tabel ke principal.

    Berlaku untuk:dicentang ya Databricks SQL dicentang ya Databricks Runtime 11.3 LTS dan selanjutnya

    SET diperbolehkan sebagai kata kunci opsional.

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

    Berlaku untuk:ditandai 'ya' Databricks SQL ditandai 'ya' 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.

    -- 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:ditandai 'ya' Databricks SQL ditandai 'ya' 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.

    -- 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');
    
  • CLUSTER BY Klausul

    Berlaku untuk:ditandai 'ya' Databricks SQL ditandai 'ya' 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:ya ditandai Databricks SQL ya ditandai Databricks Runtime 12.2 LTS ke atas ya ditandai 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.

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