Bagikan melalui


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 literal STRING dan fungsi STRING dalam ekspresi default akan menggunakan kolasi UTF8_BINARY.

    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

 { 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 }
  [, ... ]

Sebelum Databricks Runtime 16.3, klausa tidak mendukung perubahan beberapa kolom dalam satu klausa.

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

    Klausul ini hanya didukung jika table_name berupa tabel Delta.

    Perubahan jenis berikut ini didukung untuk semua tabel Delta:

    • Meningkatkan ukuran VARCHAR kolom, misalnya, dari VARCHAR(5) ke VARCHAR(10)
    • Mengubah jenis CHAR kolom menjadi VARCHAR, misalnya, dari CHAR(5) ke VARCHAR(5)
    • Mengubah jenis CHAR kolom atau VARCHAR menjadi STRING, misalnya, dari VARCHAR(10) ke STRING.

    Perubahan jenis berikut didukung untuk tabel Delta dengan delta.enableTypeWidening diatur ke true:

    Penting

    Fitur ini ada dalam Pratinjau Umum di Databricks Runtime 15.2 dan lebih tinggi.

    Jenis sumber Mendukung jenis yang lebih luas
    BYTE SHORT, INTBIGINT, DECIMAL,DOUBLE
    SHORT INT,BIGINT,DECIMAL,DOUBLE
    INT BIGINT, , DECIMALDOUBLE
    BIGINT DECIMAL, DOUBLE
    FLOAT DOUBLE
    DECIMAL DECIMAL dengan presisi dan skala yang lebih besar
    DATE TIMESTAMP_NTZ

    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

Lihat contoh ALTER TABLE.