全部产品
Search
文档中心

MaxCompute:Operasi kolom

更新时间:Jan 14, 2026

MaxCompute memungkinkan Anda memodifikasi kolom pada tabel yang sudah ada, termasuk menambahkan kolom, menghapus kolom, atau mengubah tipe data kolom sesuai kebutuhan.

Commands

Perintah SQL MaxCompute untuk operasi kolom adalah sebagai berikut:

Operation

Features

Role

Platform

Add columns or comments

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

Pengguna dengan izin Alter pada tabel

Anda dapat menjalankan perintah dalam topik ini pada platform berikut:

Delete columns

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

Change column data types

Ubah tipe data kolom yang sudah ada.

Change the column order

Sesuaikan urutan kolom tertentu dalam tabel.

Change a column name

Ubah nama kolom pada tabel non-partisi atau partisi yang sudah ada.

Change a column comment

Ubah komentar kolom pada tabel non-partisi atau partisi yang sudah ada.

Change a column name and comment

Ubah nama dan komentar kolom pada tabel non-partisi atau partisi yang sudah ada secara bersamaan.

Change the NOT NULL property of a column

Ubah properti NOT NULL pada kolom bukan kunci partisi.

Scope

Evolusi skema mencakup operasi seperti menambahkan kolom dengan tipe data kompleks, menghapus kolom, mengubah urutan kolom, dan mengubah tipe data kolom pada tabel yang sudah ada. Jika Anda mengubah urutan kolom, menambahkan kolom baru sekaligus mengubah urutannya, atau menghapus kolom, perilaku baca-tulis tabel akan berubah. Batasan berikut berlaku:

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

  • Untuk pekerjaan CUPID, hanya versi Spark berikut yang dapat membaca dari tabel tersebut. Mereka tidak dapat menulis ke tabel tersebut:

    • Spark-2.3.0-odps0.34.0

    • Spark-3.1.1-odps0.34.0

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

  • Untuk pekerjaan Hologres, jika Anda menggunakan versi Hologres yang lebih lama dari 1.3, Anda tidak dapat membaca atau menulis ke tabel yang telah dimodifikasi ketika tabel tersebut dirujuk sebagai tabel eksternal.

  • Jika terjadi evolusi skema, CLONE TABLE tidak didukung.

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

Add columns or comments

Anda dapat menambahkan kolom atau komentar ke tabel non-partisi atau partisi yang sudah ada. Perhatikan cakupan evolusi skema. MaxCompute mendukung penambahan kolom bertipe STRUCT, seperti STRUCT<x: STRING, y: BIGINT> dan MAP<STRING, STRUCT<x: DOUBLE, y: DOUBLE>>.

  • Pengaturan parameter

    Untuk mengaktifkan fitur ini, atur parameter setproject odps.schema.evolution.enable=true;.

    • Izin: Ini adalah parameter tingkat proyek. Anda harus menjadi Pemilik proyek atau memiliki peran Super_Administrator atau Admin tingkat proyek. Untuk informasi selengkapnya, lihat Assign built-in management roles to a user.

    • Periode efektif: Parameter ini berlaku sekitar 10 menit setelah diatur.

  • Format perintah

    ALTER TABLE <table_name> 
      ADD COLUMNS [IF NOT EXISTS]
      (<col_name1> <type1> COMMENT ['<col_comment>']
      [, <col_name2> <type2> COMMENT '<col_comment>'...]
      );
  • Parameter

    Parameter

    Required

    Description

    table_name

    Yes

    Nama tabel tempat Anda ingin menambahkan kolom. Anda tidak dapat menentukan urutan kolom baru. Kolom tersebut akan ditambahkan di akhir tabel secara default.

    col_name

    Yes

    Nama kolom baru.

    type

    Yes

    Tipe data kolom baru.

    col_comment

    No

    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 menjalankan pernyataan SQL untuk menambahkan kolom yang sudah ada, seperti kolom ID, ke tabel sale_detail, pesan sukses akan dikembalikan dan kolom tersebut tidak ditambahkan 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);

Delete columns

Anda dapat menghapus satu atau beberapa kolom tertentu dari tabel non-partisi atau partisi yang sudah ada. Perhatikan cakupan evolusi skema.

  • Pengaturan parameter

    Untuk mengaktifkan fitur ini, atur parameter setproject odps.schema.evolution.enable=true;.

    • Izin: Ini adalah parameter tingkat proyek. Anda harus menjadi Pemilik proyek atau memiliki peran Super_Administrator atau Admin tingkat proyek. Untuk informasi selengkapnya, lihat Assign built-in management roles to a user.

    • Periode efektif: Parameter ini berlaku sekitar 10 menit setelah diatur.

  • Format perintah

    -- 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: Required. Nama tabel tempat Anda ingin menghapus kolom.

    • col_name: Required. Nama kolom yang akan dihapus.

  • Contoh

    -- Hapus kolom customer_id dari tabel sale_detail. Masukkan yes untuk mengonfirmasi penghapusan. 
    ALTER TABLE sale_detail DROP COLUMN customer_id;
    
    -- 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;

Change column data types

Anda dapat mengubah tipe data kolom yang sudah ada. Perhatikan cakupan evolusi skema.

  • Pengaturan parameter

    Untuk mengaktifkan fitur ini, atur parameter setproject odps.schema.evolution.enable=true;.

    • Izin: Ini adalah parameter tingkat proyek. Anda harus menjadi Pemilik proyek atau memiliki peran Super_Administrator atau Admin tingkat proyek. Untuk informasi selengkapnya, lihat Assign built-in management roles to a user.

    • Periode efektif: Parameter ini berlaku sekitar 10 menit setelah diatur.

  • Format perintah

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

    Parameter

    Required

    Description

    table_name

    Yes

    Nama tabel yang tipe data kolomnya ingin diubah.

    old_column_name

    Yes

    Nama kolom yang tipe datanya ingin diubah.

    new_column_name

    Yes

    Nama kolom setelah tipe datanya diubah.

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

    new_data_type

    Yes

    Tipe data baru kolom tersebut.

  • Contoh

    -- Ubah tipe data bidang id di tabel sale_detail dari BIGINT menjadi STRING.
    ALTER TABLE sale_detail 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 table

Change the column order

Anda dapat mengubah urutan kolom dalam tabel non-partisi atau partisi yang sudah ada. Perhatikan cakupan evolusi skema.

  • Pengaturan parameter

    Untuk mengaktifkan fitur ini, atur parameter setproject odps.schema.evolution.enable=true;.

    • Izin: Ini adalah parameter tingkat proyek. Anda harus menjadi Pemilik proyek atau memiliki peran Super_Administrator atau Admin tingkat proyek. Untuk informasi selengkapnya, lihat Assign built-in management roles to a user.

    • Periode efektif: Parameter ini berlaku sekitar 10 menit setelah diatur.

  • Format perintah

    ALTER TABLE <table_name> CHANGE <old_column_name> <new_column_name> <column_type> AFTER <column_name>;
  • Parameter

    Parameter

    Required

    Description

    table_name

    Yes

    Nama tabel tempat Anda ingin mengubah urutan kolom.

    old_column_name

    Yes

    Nama asli kolom yang urutannya ingin diubah.

    new_col_name

    Yes

    Nama baru kolom tersebut.

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

    column_type

    Yes

    Tipe data asli kolom tersebut. Ini tidak dapat diubah.

    column_name

    Yes

    Memindahkan kolom yang akan diurutkan ulang setelah column_name.

  • Contoh

    -- Ubah nama kolom customer di 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 di tabel sale_detail setelah kolom total_price tanpa mengubah nama kolom.
    ALTER TABLE sale_detail CHANGE customer_id customer_id STRING AFTER total_price;

Change a column name

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

  • Format perintah

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

    Parameter

    Required

    Description

    table_name

    Yes

    Nama tabel yang nama kolomnya ingin diubah.

    old_col_name

    Yes

    Nama kolom yang akan diganti namanya. Kolom tersebut harus ada.

    new_col_name

    Yes

    Nama baru untuk kolom tersebut. Nama kolom harus unik.

  • Contoh

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

Change a column comment

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

  • Sintaks

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

    Parameter

    Required

    Description

    table_name

    Yes

    Nama tabel yang komentar kolomnya ingin diubah.

    col_name

    Yes

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

    col_comment

    Yes

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

  • Contoh

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

Change a column name and comment

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

  • Format perintah

    ALTER TABLE <table_name> CHANGE COLUMN <old_col_name> <new_col_name> <column_type> COMMENT '<col_comment>';
  • Parameter

    Parameter

    Required

    Description

    table_name

    Yes

    Nama tabel yang nama dan komentar kolomnya ingin diubah.

    old_col_name

    Yes

    Nama kolom yang akan dimodifikasi. Kolom tersebut harus ada.

    new_col_name

    Yes

    Nama baru untuk kolom tersebut. Nama kolom harus unik.

    column_type

    Yes

    Tipe data kolom tersebut.

    col_comment

    Optional

    Komentar baru. Isinya dapat mencapai panjang 1024 byte.

  • Contoh

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

Change the NOT NULL property of a column

Anda dapat mengubah properti NOT NULL pada kolom bukan kunci partisi dalam tabel agar mengizinkan nilai NULL.

Setelah Anda mengizinkan nilai NULL untuk suatu kolom, Anda tidak dapat mengembalikan perubahan ini untuk melarang nilai NULL. Lakukan dengan hati-hati.

  • Anda dapat menjalankan perintah DESC EXTENDED table_name; untuk melihat nilai properti Nullable dan menentukan apakah kolom tersebut mengizinkan nilai NULL:

    • Jika Nullable bernilai true, nilai NULL diizinkan.

    • Jika Nullable bernilai false, nilai NULL tidak diizinkan.

  • Format perintah

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

    Parameter

    Required

    Description

    table_name

    Yes

    Nama tabel yang properti NOT NULL kolomnya ingin diubah.

    old_col_name

    Yes

    Nama kolom bukan kunci partisi yang akan dimodifikasi. Kolom tersebut harus merupakan kolom bukan kunci partisi yang sudah 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     |                                                     |
    +------------------------------------------------------------------------------------+

References

Untuk informasi selengkapnya tentang perintah operasi tabel, lihat: