全部产品
Search
文档中心

MaxCompute:Operasi kolom

更新时间:Nov 10, 2025

MaxCompute mendukung operasi untuk memodifikasi kolom dalam tabel yang sudah ada, seperti menambahkan kolom, menghapus kolom, dan mengubah tipe data kolom.

Tabel berikut menjelaskan perintah operasi kolom dalam SQL MaxCompute.

Operasi

Fitur

Peran

Titik masuk

Tambahkan kolom atau komentar

Tambahkan kolom atau komentar ke tabel non-partisi atau tabel partisi yang sudah ada.

Pengguna dengan izin Alter pada tabel

Anda dapat menjalankan perintah dalam topik ini di platform berikut:

Hapus kolom

Hapus kolom dari tabel non-partisi atau tabel partisi yang sudah ada.

Ubah tipe data kolom

Ubah tipe data kolom yang sudah ada.

Modifikasi urutan kolom

Sesuaikan urutan kolom tertentu dalam sebuah tabel.

Modifikasi nama kolom

Modifikasi nama kolom dalam tabel non-partisi atau tabel partisi yang sudah ada.

Modifikasi komentar kolom

Modifikasi komentar kolom dalam tabel non-partisi atau tabel partisi yang sudah ada.

Modifikasi nama dan komentar kolom

Secara bersamaan modifikasi nama dan komentar kolom dalam tabel non-partisi atau tabel partisi yang sudah ada.

Modifikasi properti non-null kolom

Modifikasi properti non-null kolom yang bukan kolom kunci partisi.

Batasan

Evolusi skema mencakup operasi seperti menambahkan kolom dengan tipe data kompleks, menghapus kolom, mengubah urutan kolom, dan mengubah tipe data kolom. Saat Anda melakukan operasi ini, perilaku baca dan tulis tabel berubah, dan batasan berikut berlaku:

  • Jika pekerjaan tersebut adalah pekerjaan MapReduce 1.0, tugas Graph tidak dapat membaca atau menulis data ke tabel yang telah dimodifikasi.

  • Untuk pekerjaan CUPID, hanya versi Spark berikut yang dapat digunakan untuk membaca data dari tabel. Versi ini tidak dapat digunakan untuk menulis data ke tabel:

    • Spark-2.3.0-odps0.34.0

    • Spark-3.1.1-odps0.34.0

  • Pekerjaan PAI dapat membaca data dari tabel tetapi tidak dapat menulis data ke dalamnya.

  • Untuk pekerjaan Hologres yang menggunakan versi sebelum 1.3, data tidak dapat dibaca dari atau ditulis ke tabel yang dimodifikasi jika tabel tersebut dirujuk sebagai tabel eksternal.

  • Jika terjadi evolusi skema, CLONE TABLE tidak didukung.

  • Jika terjadi evolusi skema, kesalahan akan dilaporkan saat Anda menggunakan Streaming Tunnel.

Tambahkan kolom atau komentar

Tambahkan kolom atau komentar ke tabel non-partisi atau tabel partisi yang sudah ada.

Catatan
  • MaxCompute mendukung penambahan kolom bertipe STRUCT, seperti struct<x: string, y: bigint> dan map<string, struct<x: double, y: double>>. Untuk mengaktifkan fitur ini, atur parameter berikut. Perhatikan batasan-nya. Perubahan parameter memerlukan waktu sekitar 10 menit untuk berlaku.

    setproject odps.schema.evolution.enable=true;

    Untuk mengatur properti tingkat proyek, Anda harus menjadi Pemilik proyek atau memiliki peran Super_Administrator atau Admin tingkat proyek. Untuk informasi selengkapnya, lihat Menetapkan peran administrator bawaan kepada pengguna.

  • Sintaks

    ALTER TABLE <table_name> 
          ADD columns [if NOT EXISTS]
              (<col_name1> <type1> comment ['<col_comment>']
               [, <col_name2> <type2> comment '<col_comment>'...]
              );
  • Parameter

    Parameter

    Wajib

    Deskripsi

    table_name

    Ya

    Nama tabel tempat Anda ingin menambahkan kolom. Anda tidak dapat menentukan posisi kolom baru. Secara default, kolom baru ditambahkan sebagai kolom terakhir.

    col_name

    Ya

    Nama kolom baru.

    type

    Ya

    Tipe data kolom baru.

    col_comment

    Tidak

    Komentar kolom baru.

  • Contoh

    • Contoh 1: Tambahkan dua kolom ke tabel sale_detail.

      ALTER TABLE sale_detail ADD columns if NOT EXISTS(customer_name STRING, education BIGINT);
    • Contoh 2: Tambahkan dua kolom beserta komentarnya ke tabel sale_detail.

      ALTER TABLE sale_detail ADD columns (customer_name STRING comment 'customer', education BIGINT comment 'education' );
    • Contoh 3: Tambahkan kolom bertipe data kompleks ke tabel sale_detail.

      ALTER TABLE sale_detail ADD columns (region struct<province:string, area:string>);
    • Contoh 4: Tambahkan kolom ke tabel Delta Lake.

      ALTER TABLE mf_tt ADD columns (val2 bigint);
    • Contoh 5: Tambahkan kolom ID ke tabel sale_detail. Perintah mengembalikan pesan sukses, tetapi kolom tidak ditambahkan lagi jika sudah ada.

      -- Perintah mengembalikan pesan sukses, tetapi kolom ID tidak ditambahkan lagi.
      ALTER TABLE sale_detail ADD columns if NOT EXISTS(id bigint);

Hapus kolom

Hapus satu atau beberapa kolom tertentu dari tabel non-partisi atau tabel partisi yang sudah ada.

Catatan

Untuk mengaktifkan fitur ini, atur parameter berikut. Perhatikan batasan-nya. Perubahan parameter memerlukan waktu sekitar 10 menit untuk berlaku.

setproject odps.schema.evolution.enable=true;

Untuk mengatur properti tingkat proyek, Anda harus menjadi Pemilik proyek atau memiliki peran Super_Administrator atau Admin tingkat proyek. Untuk informasi selengkapnya, lihat Menetapkan peran administrator bawaan kepada pengguna.

  • Sintaks

    ALTER TABLE <table_name> DROP columns <col_name1>[, <col_name2>...];
  • Parameter

    Parameter

    Wajib

    Deskripsi

    table_name

    Ya

    Nama tabel tempat Anda ingin menghapus kolom.

    col_name

    Ya

    Nama kolom yang ingin Anda hapus.

  • Contoh: Hapus kolom dari tabel

    -- Hapus kolom customer_id dari tabel sale_detail. Masukkan yes untuk mengonfirmasi penghapusan.
    ALTER TABLE sale_detail DROP columns customer_id;
    
    -- Hapus kolom shop_name dan customer_id dari tabel sale_detail. Masukkan yes untuk mengonfirmasi penghapusan.
    ALTER TABLE sale_detail DROP columns shop_name, customer_id;

Ubah tipe data kolom

Ubah tipe data kolom yang sudah ada.

Catatan

Untuk mengaktifkan fitur ini, atur parameter berikut. Perhatikan batasan-nya. Perubahan parameter memerlukan waktu sekitar 10 menit untuk berlaku.

setproject odps.schema.evolution.enable=true;

Untuk mengatur properti tingkat proyek, Anda harus menjadi Pemilik proyek atau memiliki peran Super_Administrator atau Admin tingkat proyek. Untuk informasi selengkapnya, lihat Menetapkan peran administrator bawaan kepada pengguna.

  • Sintaks

    ALTER TABLE <table_name> change [COLUMN] <old_column_name> <new_column_name> <new_data_type>;
  • Parameter

    Parameter

    Wajib

    Deskripsi

    table_name

    Ya

    Nama tabel yang berisi kolom yang ingin Anda ubah tipe datanya.

    old_column_name

    Ya

    Nama kolom yang ingin Anda ubah tipe datanya.

    new_column_name

    Ya

    Nama baru kolom tersebut.

    Catatan

    old_column_name dapat sama dengan new_column_name. Ini menunjukkan bahwa nama kolom tidak diubah. Namun, new_column_name tidak boleh sama dengan nama kolom yang sudah ada kecuali old_column_name.

    new_data_type

    Ya

    Tipe data baru kolom tersebut.

  • Contoh

    -- Ubah tipe data bidang id dalam tabel mf_evol_t3 dari INT menjadi BIGINT.
    ALTER TABLE mf_evol_t3 change id id bigint;
    -- Ubah tipe data bidang id dalam tabel mf_evol_t3 dari BIGINT menjadi STRING.
    ALTER TABLE mf_evol_t3 change COLUMN id id string;
  • Tabel konversi tipe data

    Catatan

    Y menunjukkan bahwa konversi didukung. N menunjukkan bahwa konversi tidak didukung. - menunjukkan bahwa konversi tidak berlaku. Y() menunjukkan bahwa konversi didukung jika kondisi dalam tanda kurung terpenuhi.

    Data type conversion support table

Modifikasi urutan kolom

Modifikasi urutan kolom dalam tabel non-partisi atau tabel partisi yang sudah ada.

Catatan

Untuk mengaktifkan fitur ini, atur parameter berikut. Perhatikan batasan-nya. Perubahan parameter memerlukan waktu sekitar 10 menit untuk berlaku.

setproject odps.schema.evolution.enable=true;

Untuk mengatur properti tingkat proyek, Anda harus menjadi Pemilik proyek atau memiliki peran Super_Administrator atau Admin tingkat proyek. Untuk informasi selengkapnya, lihat Menetapkan peran administrator bawaan kepada pengguna.

  • Sintaks

    ALTER TABLE <table_name> change <old_column_name> <new_column_name> <column_type> after <column_name>;
  • Parameter

    Parameter

    Wajib

    Deskripsi

    table_name

    Ya

    Nama tabel tempat Anda ingin memodifikasi urutan kolom.

    old_column_name

    Ya

    Nama asli kolom yang ingin Anda ubah urutannya.

    new_col_name

    Ya

    Nama baru kolom tersebut.

    Catatan

    new_col_name dapat sama dengan old_column_name. Ini menunjukkan bahwa nama kolom tidak diubah. Namun, new_col_name tidak boleh sama dengan nama kolom yang sudah ada kecuali old_column_name.

    column_type

    Ya

    Tipe data asli kolom tersebut. Anda tidak dapat mengubah tipe data.

    column_name

    Ya

    Kolom setelah mana Anda ingin meletakkan kolom yang sedang dipindahkan. Kolom tersebut ditentukan oleh column_name.

  • Contoh

    --Ubah nama kolom customer_id dalam tabel sale_detail menjadi customer dan pindahkan kolom tersebut agar berada setelah kolom total_price.
    ALTER TABLE sale_detail change customer_id customer string after total_price;
    --Pindahkan kolom customer_id dalam tabel sale_detail agar berada setelah kolom total_price tanpa mengubah nama kolom.
    ALTER TABLE sale_detail change customer_id customer_id string after total_price;

Modifikasi nama kolom

Modifikasi nama kolom dalam tabel non-partisi atau tabel partisi yang sudah ada.

  • Sintaks

    ALTER TABLE <table_name> change COLUMN <old_col_name> rename TO <new_col_name>;
  • Parameter

    Parameter

    Wajib

    Deskripsi

    table_name

    Ya

    Nama tabel yang berisi kolom yang ingin Anda ubah namanya.

    old_col_name

    Ya

    Nama kolom yang ingin Anda ubah.

    Catatan

    Kolom tersebut harus ada.

    new_col_name

    Ya

    Nama baru kolom tersebut. Nama kolom tidak boleh sama dengan nama kolom yang sudah ada.

  • Contoh

    --Ubah nama kolom customer_name dalam tabel sale_detail menjadi customer.
    ALTER TABLE sale_detail change COLUMN customer_name rename TO customer;

Modifikasi komentar kolom

Modifikasi komentar kolom dalam tabel non-partisi atau tabel partisi yang sudah ada.

  • Sintaks

    ALTER TABLE <table_name> change COLUMN <col_name> comment '<col_comment>';
  • Parameter

    Parameter

    Wajib

    Deskripsi

    table_name

    Ya

    Nama tabel yang berisi kolom yang ingin Anda ubah komentarnya.

    col_name

    Ya

    Nama kolom yang ingin Anda ubah komentarnya.

    Catatan

    Kolom tersebut harus ada.

    col_comment

    Ya

    Komentar baru. Komentar harus berupa string valid dengan panjang maksimal 1024 byte. Jika tidak, kesalahan akan dilaporkan.

  • Contoh

    --Ubah komentar kolom customer dalam tabel sale_detail.
    ALTER TABLE sale_detail change COLUMN customer comment 'customer';

Modifikasi nama dan komentar kolom

Modifikasi nama dan komentar kolom dalam tabel non-partisi atau tabel partisi.

  • Sintaks

    ALTER TABLE <table_name> change COLUMN <old_col_name> <new_col_name> <column_type> comment '<col_comment>';
  • Parameter

    Parameter

    Wajib

    Deskripsi

    table_name

    Ya

    Nama tabel yang berisi kolom yang ingin Anda ubah nama dan komentarnya.

    old_col_name

    Ya

    Nama kolom yang ingin Anda ubah.

    Catatan

    Kolom tersebut harus ada.

    new_col_name

    Ya

    Nama baru kolom tersebut. Nama kolom tidak boleh sama dengan nama kolom yang sudah ada.

    column_type

    Ya

    Tipe data kolom tersebut.

    col_comment

    Opsional

    Komentar baru. Komentar dapat memiliki panjang hingga 1024 byte.

  • Contoh

    --Ubah nama kolom customer_name dalam tabel sale_detail menjadi customer_newname dan atur komentarnya menjadi 'customer'.
    ALTER TABLE sale_detail change COLUMN customer_name customer_newname STRING comment 'customer';

Modifikasi properti non-null kolom

Anda dapat mengubah properti non-null kolom yang bukan kolom kunci partisi. Jika kolom diatur sebagai NOT NULL, Anda dapat menjalankan perintah ini untuk mengizinkan kolom berisi nilai NULL.

Jalankan perintah desc extended table_name; untuk melihat nilai properti Nullable dan memeriksa apakah kolom dapat berisi nilai NULL. Jika Nullable bernilai true, kolom dapat berisi nilai NULL. Jika Nullable bernilai false, kolom tidak dapat berisi nilai NULL.

  • Batasan

    Perubahan ini tidak dapat dikembalikan. Setelah Anda mengubah properti agar mengizinkan nilai NULL untuk kolom, Anda tidak dapat mengubahnya kembali menjadi NOT NULL. Lakukan dengan hati-hati.

  • Sintaks

    ALTER TABLE <table_name> change COLUMN <old_col_name> NULL;
  • Parameter

    Parameter

    Wajib

    Deskripsi

    table_name

    Ya

    Nama tabel yang berisi kolom yang ingin Anda ubah properti non-null-nya.

    old_col_name

    Ya

    Nama kolom non-kunci partisi yang ingin Anda ubah.

    Catatan

    Kolom tersebut harus merupakan kolom non-kunci partisi yang sudah ada.

  • Contoh

    --Buat tabel partisi di mana kolom id diatur sebagai NOT NULL.
    CREATE TABLE null_test(id int NOT NULL, name string) partitioned BY (ds string);
    --Ubah kolom id agar mengizinkan nilai NULL.
    ALTER TABLE null_test change COLUMN id NULL;

Referensi

Untuk informasi selengkapnya tentang perintah operasi tabel, lihat topik berikut: