All Products
Search
Document Center

MaxCompute:Operasi kolom

Last Updated:Aug 22, 2026

MaxCompute memungkinkan Anda memodifikasi kolom dalam tabel yang sudah ada, termasuk menambahkan atau menghapus kolom serta mengubah tipe datanya untuk memenuhi kebutuhan bisnis.

Perintah

Tabel berikut menjelaskan perintah SQL MaxCompute untuk operasi kolom.

Aksi

Deskripsi

Role

Platform

Tambahkan kolom atau komentar

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

Pengguna dengan izin Alter pada tabel

Anda dapat menjalankan perintah ini di platform berikut:

Hapus kolom

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

Ubah tipe data kolom

Mengubah tipe data kolom yang sudah ada.

Ubah urutan kolom

Menyesuaikan urutan kolom tertentu dalam tabel.

Ubah nama kolom

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

Ubah komentar kolom

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

Ubah nama dan komentar kolom

Mengubah nama dan komentar kolom dalam tabel non-partisi atau tabel partisi yang sudah ada secara bersamaan.

Ubah properti NOT NULL kolom

Mengubah properti NOT NULL kolom yang bukan kunci partisi.

Catatan penggunaan

Evolusi skema mencakup operasi seperti menambahkan kolom dengan tipe data kompleks, menghapus kolom, mengatur ulang kolom, dan mengubah tipe data kolom. Saat Anda mengatur ulang kolom, menambah lalu mengatur ulang kolom, atau menghapus kolom, perilaku baca-tulis tabel akan terpengaruh, dan batasan berikut berlaku:

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

  • Untuk job CUPID, hanya versi Spark berikut yang dapat membaca data dari tabel tersebut; penulisan data ke tabel tersebut tidak didukung:

    • Spark-2.3.0-odps0.34.0

    • Spark-3.1.1-odps0.34.0

  • Job PAI dapat membaca data dari tabel, tetapi tidak dapat menulis data ke tabel tersebut.

  • Untuk job Hologres, jika Anda menggunakan versi Hologres sebelum 1.3, Anda tidak dapat membaca atau menulis ke tabel yang telah dimodifikasi saat mereferensikannya sebagai tabel eksternal.

  • Setelah evolusi skema, CLONE TABLE tidak didukung.

  • Streaming Tunnel melaporkan error jika evolusi skema telah terjadi.

Tambahkan kolom atau komentar

Anda dapat menambahkan kolom atau komentar ke tabel non-partisi atau tabel partisi yang sudah ada. Untuk informasi lebih lanjut mengenai batasan, lihat Catatan penggunaan. MaxCompute mendukung penambahan kolom bertipe STRUCT, seperti STRUCT<x: STRING, y: BIGINT> dan MAP<STRING, STRUCT<x: DOUBLE, y: DOUBLE>>.

  • Prasyarat

    Jalankan perintah setproject odps.schema.evolution.enable=true; untuk mengaktifkan evolusi skema.

    • Izin: Ini adalah properti tingkat proyek. Untuk menjalankan perintah ini, Anda harus menjadi pemilik proyek atau memiliki role Super_Administrator atau Admin tingkat proyek. Untuk informasi lebih lanjut, lihat Tetapkan role manajemen bawaan kepada pengguna.

    • Waktu efektif: Perubahan berlaku dalam waktu sekitar 10 menit.

  • Sintaksis

    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 yang akan dimodifikasi. Kolom baru ditambahkan di akhir tabel.

    col_name

    Ya

    Nama kolom baru.

    type

    Ya

    Tipe data kolom baru.

    col_comment

    Tidak

    Komentar untuk 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 dengan komentar 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_info struct<province:string, area:string>);
    • Contoh 4: Jika Anda menggunakan IF NOT EXISTS untuk menambahkan kolom yang sudah ada, perintah akan mengembalikan pesan sukses tanpa menambahkan kolom tersebut lagi.

      -- Pernyataan berhasil, tetapi kolom ID tidak ditambahkan berulang.
      ALTER TABLE sale_detail ADD COLUMNS IF NOT EXISTS(id bigint);
    • Contoh 5: Tambahkan kolom ke tabel Delta.

      CREATE TABLE delta_table_test (pk BIGINT NOT NULL PRIMARY KEY, val BIGINT) 
        TBLPROPERTIES ("transactional"="true");
        
      ALTER TABLE delta_table_test ADD COLUMNS (val2 bigint);

Hapus kolom

Anda dapat menghapus satu atau beberapa kolom dari tabel non-partisi atau tabel partisi yang sudah ada. Untuk informasi lebih lanjut mengenai batasan, lihat Catatan penggunaan.

  • Prasyarat

    Jalankan perintah setproject odps.schema.evolution.enable=true; untuk mengaktifkan evolusi skema.

    • Izin: Ini adalah properti tingkat proyek. Untuk menjalankan perintah ini, Anda harus menjadi pemilik proyek atau memiliki role Super_Administrator atau Admin tingkat proyek. Untuk informasi lebih lanjut, lihat Tetapkan role manajemen bawaan kepada pengguna.

    • Waktu efektif: Perubahan berlaku dalam waktu sekitar 10 menit.

  • Sintaksis

    -- Hapus satu kolom.
    ALTER TABLE <table_name> DROP COLUMN <col_name>;
    
    -- Hapus beberapa kolom.
    ALTER TABLE <table_name> DROP COLUMNS <col_name1>[, <col_name2>...];
  • Parameter

    • table_name: Wajib. Nama tabel yang akan dimodifikasi.

    • col_name: Wajib. Nama kolom yang akan dihapus.

  • Contoh

    -- Contoh 1: Hapus kolom customer_id dari tabel sale_detail.
    ALTER TABLE sale_detail DROP COLUMNS customer_id;
    
    -- Contoh 2: Hapus kolom shop_name dan total_price dari tabel sale_detail.
    ALTER TABLE sale_detail DROP COLUMNS shop_name, total_price;

Ubah tipe data kolom

Anda dapat mengubah tipe data kolom yang sudah ada. Untuk informasi lebih lanjut mengenai batasan, lihat Catatan penggunaan.

  • Prasyarat

    Jalankan perintah setproject odps.schema.evolution.enable=true; untuk mengaktifkan evolusi skema.

    • Izin: Ini adalah properti tingkat proyek. Untuk menjalankan perintah ini, Anda harus menjadi pemilik proyek atau memiliki role Super_Administrator atau Admin tingkat proyek. Untuk informasi lebih lanjut, lihat Tetapkan role manajemen bawaan kepada pengguna.

    • Waktu efektif: Perubahan berlaku dalam waktu sekitar 10 menit.

  • Sintaksis

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

    old_column_name

    Ya

    Nama kolom yang akan dimodifikasi.

    new_column_name

    Ya

    Nama baru kolom tersebut.

    old_column_name dapat sama dengan new_column_name, yang menunjukkan bahwa nama kolom tidak diubah. Namun, new_column_name tidak boleh sama dengan nama kolom lain selain old_column_name.

    new_data_type

    Ya

    Tipe data baru untuk kolom tersebut.

  • Contoh

    -- Ubah tipe data bidang id dalam tabel sale_detail dari BIGINT menjadi STRING.
    ALTER TABLE sale_detail CHANGE COLUMN id id STRING;
  • Konversi tipe data yang didukung

    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 table

Ubah urutan kolom

Anda dapat mengubah urutan kolom dalam tabel non-partisi atau tabel partisi yang sudah ada. Untuk informasi lebih lanjut mengenai batasan, lihat Catatan penggunaan.

  • Prasyarat

    Jalankan perintah setproject odps.schema.evolution.enable=true; untuk mengaktifkan evolusi skema.

    • Izin: Ini adalah properti tingkat proyek. Untuk menjalankan perintah ini, Anda harus menjadi pemilik proyek atau memiliki role Super_Administrator atau Admin tingkat proyek. Untuk informasi lebih lanjut, lihat Tetapkan role manajemen bawaan kepada pengguna.

    • Waktu efektif: Perubahan berlaku dalam waktu sekitar 10 menit.

  • Sintaksis

    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 yang akan dimodifikasi.

    old_column_name

    Ya

    Nama kolom yang akan dipindahkan.

    new_col_name

    Ya

    Nama baru kolom tersebut.

    new_col_name dapat sama dengan old_column_name, yang menunjukkan bahwa nama kolom tidak diubah. Namun, new_col_name tidak boleh sama dengan nama kolom lain selain old_column_name.

    column_type

    Ya

    Tipe data asli kolom tersebut. Ini tidak dapat diubah.

    column_name

    Ya

    Memindahkan kolom yang akan diatur ulang setelah column_name.

  • Contoh

    -- Ubah nama kolom customer dalam tabel sale_detail menjadi customer_id dan pindahkan setelah kolom total_price.
    ALTER TABLE sale_detail CHANGE customer customer_id STRING AFTER total_price;
    
    -- Pindahkan kolom customer_id dalam tabel sale_detail setelah kolom total_price tanpa mengubah nama kolom.
    ALTER TABLE sale_detail CHANGE customer_id customer_id STRING AFTER total_price;

Ubah nama kolom

Anda dapat mengubah nama kolom dalam tabel non-partisi atau tabel partisi yang sudah ada.

  • Sintaksis

    ALTER TABLE <table_name> CHANGE COLUMN <old_col_name> RENAME TO <new_col_name>;
  • Parameter

    Parameter

    Wajib

    Deskripsi

    table_name

    Ya

    Nama tabel yang akan dimodifikasi.

    old_col_name

    Ya

    Nama saat ini dari kolom tersebut. Kolom tersebut harus ada.

    new_col_name

    Ya

    Nama baru untuk kolom tersebut. Nama kolom harus unik dalam tabel.

  • Contoh

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

Ubah komentar kolom

Anda dapat mengubah komentar kolom dalam tabel non-partisi atau tabel partisi yang sudah ada.

  • Sintaksis

    ALTER TABLE <table_name> CHANGE COLUMN <col_name> COMMENT '<col_comment>';
  • Parameter

    Parameter

    Wajib

    Deskripsi

    table_name

    Ya

    Nama tabel yang akan dimodifikasi.

    col_name

    Ya

    Nama kolom yang komentarnya ingin diubah. Kolom tersebut harus ada.

    col_comment

    Ya

    Komentar baru, yang harus berupa string valid. Panjang maksimum adalah 1.024 byte.

  • Contoh

    -- Ubah komentar kolom customer dalam tabel sale_detail0113.
    ALTER TABLE sale_detail0113 CHANGE COLUMN customer COMMENT 'customer';

Ubah nama dan komentar kolom

Anda dapat mengubah nama dan komentar kolom dalam tabel non-partisi atau tabel partisi.

  • Sintaksis

    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 akan dimodifikasi.

    old_col_name

    Ya

    Nama saat ini dari kolom yang akan dimodifikasi. Kolom tersebut harus ada.

    new_col_name

    Ya

    Nama baru untuk kolom tersebut. Nama kolom harus unik dalam tabel.

    column_type

    Ya

    Tipe data kolom tersebut.

    col_comment

    Opsional

    Komentar baru. Panjang maksimum adalah 1.024 byte.

  • Contoh

    -- Ubah nama kolom customer dalam tabel sale_detail menjadi customer_newname dan ubah komentarnya menjadi 'customer'.
    ALTER TABLE sale_detail CHANGE COLUMN customer customer_newname STRING COMMENT 'customer';

Ubah properti NOT NULL kolom

Anda dapat mengubah properti NOT NULL kolom yang bukan kunci partisi. Misalnya, jika kolom non-kunci partisi didefinisikan agar tidak menerima nilai NULL, Anda dapat menggunakan perintah ini untuk mengubahnya agar menerima nilai NULL.

Operasi ini tidak dapat dibalik: Anda tidak dapat mengubah kembali kolom agar tidak menerima nilai NULL setelah mengizinkannya.

  • Jalankan perintah DESC EXTENDED table_name; untuk melihat properti Nullable dan menentukan apakah kolom tersebut menerima nilai NULL:

    • Jika Nullable bernilai true, nilai NULL diizinkan.

    • Jika Nullable bernilai false, nilai NULL tidak diizinkan.

  • Sintaksis

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

    Parameter

    Wajib

    Deskripsi

    table_name

    Ya

    Nama tabel yang akan dimodifikasi.

    old_col_name

    Ya

    Nama kolom non-kunci partisi yang akan dimodifikasi. Kolom tersebut harus ada.

  • Contoh

    -- Buat tabel partisi di mana kolom id tidak boleh NULL.
    CREATE TABLE null_test(id INT NOT NULL, name STRING) PARTITIONED BY (ds string);
    
    -- Lihat properti tabel.
    DESC EXTENDED null_test;
    -- Hasil berikut dikembalikan:
    +------------------------------------------------------------------------------------+
    | Native Columns:                                                                    |
    +------------------------------------------------------------------------------------+
    | Field    | Type   | Label | ExtendedLabel | Nullable | DefaultValue | Comment      |
    +------------------------------------------------------------------------------------+
    | id       | int    |       |               | false    | NULL         |              |
    | name     | string |       |               | true     | NULL         |              |
    +------------------------------------------------------------------------------------+
    | Partition Columns:                                                                 |
    +------------------------------------------------------------------------------------+
    | ds              | string     |                                                     |
    +------------------------------------------------------------------------------------+
    
    -- Izinkan kolom id bernilai NULL.
    ALTER TABLE null_test CHANGE COLUMN id NULL;
    -- Lihat properti tabel.
    DESC EXTENDED null_test;
    -- Hasil berikut dikembalikan:
    +------------------------------------------------------------------------------------+
    | Native Columns:                                                                    |
    +------------------------------------------------------------------------------------+
    | Field    | Type   | Label | ExtendedLabel | Nullable | DefaultValue | Comment      |
    +------------------------------------------------------------------------------------+
    | id       | int    |       |               | true     | NULL         |              |
    | name     | string |       |               | true     | NULL         |              |
    +------------------------------------------------------------------------------------+
    | Partition Columns:                                                                 |
    +------------------------------------------------------------------------------------+
    | ds              | string     |                                                     |
    +------------------------------------------------------------------------------------+

Referensi

Untuk informasi lebih lanjut mengenai operasi tabel, lihat topik berikut: