ALTER TABLE ... COLUMN Klausul

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

Menambah, memodifikasi, atau menghapus kolom dalam sebuah tabel, atau bidang dalam kolom pada tabel Delta Lake.

Izin yang diperlukan

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

  • ALTER COLUMN
  • ADD COLUMN
  • DROP COLUMN

Semua operasi lainnya memerlukan kepemilikan atas tabel.

Sintaks

ALTER TABLE table_name
   { ADD COLUMN clause |
     ALTER COLUMN clause |
     DROP COLUMN clause |
     RENAME COLUMN clause }

Tambahkan klausa COLUMN

Klausul ini tidak didukung untuk sumber data JDBC.

Menambahkan satu atau beberapa kolom ke tabel, atau bidang ke kolom yang ada di tabel Delta Lake.

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

Sintaks

{ ADD [ COLUMN | COLUMNS ]
  ( { { column_identifier | field_name } data_type
      [ COLLATE collation_name ]
      [ DEFAULT clause ]
      [ COMMENT comment ]
      [ FIRST | AFTER identifier ]
      [ MASK clause ] } [, ...] ) }

Parameter-parameternya

  • column_identifier

    Nama kolom yang akan ditambahkan. Nama harus unik dalam tabel.

    Kolom atau bidang akan ditambahkan di bagian akhir, kecuali jika FIRST atau AFTER name ditentukan.

  • field_name

    Nama lengkap bidang yang memenuhi syarat untuk ditambahkan ke kolom yang ada. Semua komponen jalur ke bidang berlapis harus ada dan nama bidang itu sendiri harus bersifat unik.

    Untuk menambahkan bidang ke struktur yang ditumpuk di atau ARRAYMAP jenis, gunakan nama khusus berikut:

    • ELEMENT untuk menavigasi ke ARRAY elemen.
    • KEY untuk menavigasi ke MAP kunci.
    • VALUE untuk menavigasi ke MAP nilai.

    Misalnya: phonenumbers.element.countrycode menambahkan bidang countrycode ke setiap elemen phonenumbers array.

  • DEFAULT default_expression

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

    Menentukan nilai DEFAULT untuk kolom yang digunakan pada INSERT dan MERGE ... INSERT saat kolom tidak ditentukan. Setiap STRING literal dan STRING fungsi dalam ekspresi default menggunakan kolase default tabel.

    Jika tidak ada default yang ditentukan, DEFAULT NULL diasumsikan untuk kolom yang dapat bernilai null.

    default_expression dapat terdiri dari fungsi atau operator SQL literal dan bawaan kecuali:

    default_expression tidak boleh berisi subkueri apa pun.

    DEFAULT didukung untuk sumber CSV, JSON, PARQUET, dan ORC.

  • data_type

    Menentukan jenis data kolom atau bidang. Tidak semua tipe data yang didukung oleh Azure Databricks didukung oleh semua sumber data.

  • COLLATE collation_name

    Untuk data_typeSTRING secara opsional menentukan pengurutan yang akan digunakan dengan kolom atau bidang. Jika tidak ditentukan, pengurutan UTF8_BINARY digunakan.

  • COMMENT comment

    Literal opsional STRING yang menjelaskan kolom atau bidang yang ditambahkan.

    Jika Anda ingin menambahkan komentar yang dihasilkan AI untuk kolom tabel atau tabel yang dikelola oleh Katalog Unity, lihat Menambahkan komentar yang dihasilkan AI ke objek Katalog Unity.

  • FIRST

    Jika ditentukan, kolom akan ditambahkan sebagai kolom pertama dari tabel, atau kolom akan ditambahkan sebagai kolom pertama dalam struktur yang berisi.

  • AFTER pengidentifikasi

    Jika ditentukan, kolom atau bidang akan langsung ditambahkan setelah bidang atau kolom identifier.

  • Klausa MASK

    Berlaku untuk:ditandai dengan tanda centang ya Databricks SQL ditandai dengan tanda centang ya Databricks Runtime 12.2 LTS ke atas ditandai dengan tanda centang ya Unity Catalog saja

    Penting

    Fitur ini ada di Pratinjau Publik.

    Menambahkan fungsi masker kolom untuk menganonimkan data sensitif. Semua kueri berikutnya dari kolom tersebut akan menerima hasil evaluasi fungsi tersebut di atas kolom sebagai pengganti nilai asli kolom. Ini dapat berguna untuk tujuan kontrol akses terperinci di mana fungsi dapat memeriksa identitas atau keanggotaan grup pengguna yang memanggil untuk menentukan apakah akan menyunting nilai tersebut.

Klausa ALTER COLUMN

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

Mengubah properti atau lokasi kolom.

Sintaks

Di Databricks SQL dan Databricks Runtime 16.3 ke atas, Anda dapat mengubah beberapa kolom dalam satu pernyataan dengan memisahkan setiap perubahan kolom dengan koma. Dalam versi Databricks Runtime sebelumnya, setiap pernyataan hanya dapat mengubah satu kolom.

{ ALTER | CHANGE } [ COLUMN ]
  { { column_identifier | field_name }
    { COMMENT comment |
      { FIRST | AFTER column_identifier } |
      { SET | DROP } NOT NULL |
      TYPE data_type |
      SET DEFAULT clause |
      DROP DEFAULT |
      SYNC IDENTITY }
  } [, ... ]

Operasi berikut memodifikasi masker atau tag pada satu kolom dan tidak dapat dikombinasikan dengan perubahan kolom lainnya:

{ ALTER | CHANGE } [ COLUMN ]
  { column_identifier | field_name }
  { SET { MASK clause } |
    DROP MASK |
    SET TAGS clause |
    UNSET TAGS clause }

Parameter-parameternya

  • column_identifier

    Nama kolom yang akan diubah.

    Jika pengidentifikasi kolom dirujuk lebih dari sekali, Azure Databricks akan memunculkan NOT_SUPPORTED_CHANGE_SAME_COLUMN.

  • field_name

    Nama lengkap bidang yang akan diubah. Semua komponen jalur ke bidang bersarang harus ada.

    Azure Databricks akan memunculkan NOT_SUPPORTED_CHANGE_SAME_COLUMN jika nama bidang dirujuk lebih dari sekali.

  • COMMENT comment

    Mengubah deskripsi kolom column_name. comment harus berupa nilai literal STRING.

  • FIRST atau AFTERpengidentifikasi

    Memindahkan kolom dari posisinya saat ini ke depan (FIRST) atau langsung AFTER setelah identifier. Klausul ini hanya didukung jika table_name berupa tabel Delta.

  • TYPE data_type

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

    Mengubah tipe column_name data kolom.

    Klausa ini hanya didukung jika table_name merupakan tabel Delta Lake.

    Untuk informasi lebih rinci tentang pelebaran jenis, lihat Pelebaran Jenis.

  • SET NOT NULL atau DROP NOT NULL

    Mengubah domain nilai kolom yang valid untuk mengecualikan null SET NOT NULL, atau menyertakan null DROP NOT NULL. Opsi ini hanya didukung untuk tabel Delta Lake. Delta Lakes akan memastikan batasan tersebut berlaku untuk semua data yang ada dan yang baru.

  • SYNC IDENTITY

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

    Sinkronkan metadata kolom identitas dengan data aktual. Saat Anda menulis nilai Anda sendiri ke kolom identitas, nilai tersebut mungkin tidak sesuai dengan metadata. Opsi ini mengevaluasi status dan memperbarui metadata agar konsisten dengan data aktual. Setelah perintah ini, nilai identitas yang ditetapkan berikutnya secara otomatis akan dimulai dari start + (n + 1) * step, di mana n adalah nilai terkecil yang memenuhi start + n * step >= max() (untuk langkah positif).

    Opsi ini hanya didukung untuk kolom identitas pada tabel Delta Lake.

  • DROP DEFAULT

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

    Menghapus ekspresi default dari kolom. Untuk kolom yang dapat diubah ke null, ini setara dengan SET DEFAULT NULL. Untuk kolom yang ditentukan dengan NOT NULL, Anda perlu memberikan nilai pada setiap operasi INSERT di masa mendatang

  • SET DEFAULT default_expression

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

    Menentukan nilai DEFAULT untuk kolom yang digunakan pada INSERT dan MERGE ... INSERT saat kolom tidak ditentukan.

    Jika tidak ada default yang ditentukan, DEFAULT NULL diasumsikan untuk kolom yang dapat bernilai null.

    default_expression dapat terdiri dari fungsi atau operator SQL literal dan bawaan kecuali:

    default_expression tidak boleh berisi subkueri.

    DEFAULT didukung untuk sumber CSV, JSON, ORC, dan PARQUET.

    Saat Anda menentukan default untuk kolom yang baru ditambahkan, default berlaku untuk semua baris yang sudah ada sebelumnya. Jika default menyertakan fungsi non-deterministik seperti rand atau current_timestamp, nilai dihitung sekali saat ALTER TABLE dijalankan, dan diterapkan sebagai konstanta ke baris yang sudah ada sebelumnya. Untuk baris yang baru disisipkan, ekspresi default berjalan sekali per baris.

    Saat Anda mengatur default menggunakan ALTER COLUMN, baris yang ada tidak terpengaruh oleh perubahan tersebut.

  • SET Klausa MASK

    Berlaku untuk:ditandai dengan tanda centang ya Databricks SQL ditandai dengan tanda centang ya Databricks Runtime 12.2 LTS ke atas ditandai dengan tanda centang ya Unity Catalog saja

    Penting

    Fitur ini ada di Pratinjau Publik.

    Menambahkan fungsi masker kolom untuk menganonimkan data sensitif. Semua kueri berikutnya dari kolom tersebut akan menerima hasil evaluasi fungsi tersebut di atas kolom sebagai pengganti nilai asli kolom. Ini dapat berguna untuk tujuan kontrol akses terperinci di mana fungsi dapat memeriksa identitas atau keanggotaan grup pengguna yang memanggil untuk menentukan apakah akan menyunting nilai tersebut.

  • DROP MASK

    Berlaku untuk:centang ya hanya untuk Katalog Unity

    Penting

    Fitur ini ada di Pratinjau Publik.

    Menghapus masker kolom untuk kolom ini, jika ada. Kueri di masa mendatang dari kolom ini akan menerima nilai asli kolom.

  • 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 kolom. Anda harus memiliki APPLY TAG izin untuk menambahkan tag ke kolom.

    • 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

    Hapus tag dari kolom. Anda harus memiliki APPLY TAG izin untuk menghapus tag dari kolom.

    • tag_name

      Harfiah STRING. tag_name harus unik dalam tabel atau kolom.

Klausa DROP COLUMN

Penting

Fitur ini ada di Pratinjau Publik.

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

Letakkan satu atau beberapa kolom atau bidang dalam relasi.

Saat menghilangkan kolom atau bidang, Anda juga perlu menghilangkan batasan pemeriksaan dependen serta kolom yang dihasilkan.

Untuk persyaratan, lihat Mengganti nama dan menghapus kolom dengan pemetaan kolom Delta Lake.

Sintaks

DROP [COLUMN | COLUMNS] [ IF EXISTS ] ( { {column_identifier | field_name} [, ...] )

Parameter-parameternya

  • IF EXISTS

    Saat Anda menentukan IF EXISTS, Azure Databricks mengabaikan upaya untuk menghilangkan kolom yang tidak ada. Jika tidak, menghilangkan kolom yang tidak ada akan menyebabkan kesalahan.

  • column_identifier

    Nama kolom yang sudah ada.

  • field_name

    Nama lengkap yang terdefinisi dari suatu bidang yang ada.

Klausa UBAH NAMA COLUMN

Penting

Fitur ini ada di Pratinjau Publik.

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

Mengganti nama kolom atau bidang dalam tabel Delta Lake yang diaktifkan untuk pemetaan kolom.

Saat Anda mengganti nama kolom atau bidang, Anda juga perlu mengubah batasan pemeriksaan dependen dan kolom yang dihasilkan. Tiap kunci primer dan kunci asing yang menggunakan kolom akan dihapus. Dalam hal kunci asing, Anda harus memiliki tabel tempat kunci asing ditentukan.

Untuk persyaratan dan cara mengaktifkan pemetaan kolom, lihat Ganti nama dan hapus kolom dengan pemetaan kolom Delta Lake.

Sintaks

RENAME COLUMN { column_identifier TO to_column_identifier|
                field_name TO to_field_identifier }

Parameter-parameternya

Contoh

Menambahkan kolom

> ALTER TABLE students ADD COLUMN email STRING COMMENT 'student email';

> DESCRIBE students;
  col_name data_type     comment
  -------- ---------  ----------
      name    string        null
    rollno       int        null
       age       int        null
     email    string student email

Mengubah satu kolom

> ALTER TABLE students ALTER COLUMN email COMMENT 'primary email address';

Mengubah beberapa kolom dalam satu pernyataan

Berlaku untuk:bercentang ya Databricks SQL bercentang ya Databricks Runtime 16.3 ke atas

Anda dapat menerapkan berbagai jenis perubahan ke kolom yang berbeda dalam satu ALTER TABLE ... ALTER COLUMN pernyataan. Pisahkan setiap perubahan kolom dengan koma. Setiap kolom hanya dapat muncul sekali.

-- Update comments on two columns at once
> ALTER TABLE students ALTER COLUMN
    name COMMENT 'full name',
    email COMMENT 'primary email';

Anda dapat mencampur berbagai jenis perubahan kolom dalam pernyataan yang sama, seperti menyusun ulang, menambahkan default, dan memperbarui komentar:

-- Reorder columns and set a default in a single statement
> ALTER TABLE students ALTER COLUMN
    email FIRST,
    name AFTER email,
    age SET DEFAULT 0;

Catatan

Dalam versi Databricks Runtime sebelum 16.3, Anda harus menjalankan pernyataan terpisah ALTER TABLE untuk setiap perubahan kolom. Contohnya:

> ALTER TABLE students ALTER COLUMN name COMMENT 'full name';
> ALTER TABLE students ALTER COLUMN email COMMENT 'primary email';

Menghapus kolom

> ALTER TABLE students DROP COLUMN email;

Mengganti nama kolom

> ALTER TABLE students RENAME COLUMN rollno TO student_id;

Untuk contoh selengkapnya, lihat ALTER TABLE contoh.