全部产品
Search
文档中心

MaxCompute:Operasi partisi

更新时间:Jan 22, 2026

MaxCompute memungkinkan Anda melakukan berbagai operasi pada partisi tabel yang sudah ada, seperti menambahkan, menghapus, dan memodifikasi nilai partisi sesuai kebutuhan.

Indeks fitur

Berikut adalah perintah SQL MaxCompute untuk operasi partisi.

Operasi

Fitur

Peran

Titik masuk

Tambah partisi

Tambahkan partisi baru ke tabel partisi yang sudah ada.

Pengguna yang memiliki izin Alter pada tabel

Anda dapat menjalankan perintah dalam topik ini di platform berikut:

Perbarui waktu modifikasi terakhir partisi

Perbarui LastModifiedTime suatu partisi dalam tabel partisi.

Modifikasi nilai partisi

Modifikasi nilai suatu partisi dalam tabel partisi.

Gabung partisi

Gabungkan beberapa partisi dari suatu tabel menjadi satu partisi. Operasi ini menghapus informasi dimensi dari partisi sumber dan memindahkan datanya ke partisi tujuan.

Daftar semua partisi

Daftarkan semua partisi dalam suatu tabel.

Lihat informasi partisi

Lihat informasi tentang partisi tertentu dalam tabel partisi.

Hapus partisi

Hapus partisi dari tabel partisi yang sudah ada.

Bersihkan data dari partisi

Bersihkan data dari partisi yang ditentukan.

Cakupan

  • Tipe data: Anda dapat menggunakan bidang dengan tipe data TINYINT, SMALLINT, INT, BIGINT, CHAR, VARCHAR, dan STRING sebagai kolom kunci partisi.

  • Tingkat partisi untuk satu tabel: Satu tabel dapat memiliki maksimal enam tingkat partisi.

  • Jumlah partisi dalam satu tabel: Satu tabel dapat memiliki maksimal 60.000 partisi.

  • Jumlah maksimum partisi yang dapat dikueri sekaligus: Anda dapat mengkueri maksimal 10.000 partisi sekaligus.

  • Operasi penggabungan partisi tidak didukung untuk tabel partisi transaksional.

Tambah partisi

Anda dapat menambahkan partisi baru ke tabel partisi yang sudah ada.

  • Batasan

    • Untuk tabel partisi multi-level, Anda harus menentukan nilai untuk semua kolom kunci partisi saat menambahkan partisi.

    • Anda hanya dapat menambahkan nilai partisi, bukan bidang partisi.

  • Format perintah

    ALTER TABLE <table_name> ADD [IF NOT EXISTS] PARTITION <pt_spec> [PARTITION <pt_spec> PARTITION <pt_spec>...];
  • Parameter

    Parameter

    Wajib

    Deskripsi

    table_name

    Ya

    Nama tabel partisi tempat Anda ingin menambahkan partisi.

    IF NOT EXISTS

    Tidak

    Jika Anda tidak menentukan IF NOT EXISTS dan partisi dengan nama yang sama sudah ada, pernyataan gagal dan mengembalikan error.

    pt_spec

    Ya

    Partisi yang akan ditambahkan. Formatnya adalah (partition_col1 = partition_col_value1, partition_col2 = partition_col_value2, ...). partition_col adalah bidang partisi, dan partition_col_value adalah nilai partisi. Nama bidang partisi tidak peka huruf besar/kecil. Nilai partisi peka huruf besar/kecil.

  • Contoh

    Anda dapat membuat tabel partisi bernama sale_detail. Untuk informasi lebih lanjut tentang cara membuat dan menghapus tabel, lihat Buat dan hapus tabel.

    CREATE TABLE IF NOT EXISTS sale_detail(
     shop_name     STRING,
     customer_id   STRING,
     total_price   DOUBLE)
    PARTITIONED BY (sale_date STRING, region STRING);
    • Contoh 1: Tambahkan partisi ke tabel sale_detail untuk menyimpan catatan penjualan wilayah Hangzhou pada Desember 2025.

      ALTER TABLE sale_detail ADD IF NOT EXISTS PARTITION (sale_date='202512', region='hangzhou');
    • Contoh 2: Tambahkan dua partisi ke tabel sale_detail secara bersamaan untuk menyimpan catatan penjualan wilayah Beijing dan Shanghai pada Desember 2025.

      ALTER TABLE sale_detail ADD IF NOT EXISTS PARTITION (sale_date='202512', region='beijing') PARTITION (sale_date='202512', region='shanghai');
    • Contoh 3: Tambahkan partisi ke tabel sale_detail dan tentukan hanya bidang partisi sale_date. Operasi ini mengembalikan error karena Anda harus menentukan kedua bidang partisi sale_date dan region.

      ALTER TABLE sale_detail ADD IF NOT EXISTS PARTITION (sale_date='20260111');
      
      -- Pesan error berikut dikembalikan:
      FAILED: ODPS-0130071:[1,58] Semantic analysis exception - provided partition spec does not match table partition spec
    • Contoh 4: Tambahkan partisi ke tabel Delta Lake

      -- Buat tabel Delta Lake.
      CREATE TABLE delta_table_test_par (
        pk BIGINT NOT NULL PRIMARY KEY, 
        val BIGINT NOT NULL) 
        PARTITIONED BY (dd STRING, hh STRING) 
        TBLPROPERTIES ("transactional"="true"); 
                   
      -- Tambahkan partisi.           
      ALTER TABLE delta_table_test_par ADD PARTITION (dd='01', hh='01');
      
      CREATE TABLE delta_table_test_nonpar (
        pk BIGINT NOT NULL PRIMARY KEY, 
        val BIGINT NOT NULL) 
        TBLPROPERTIES ("transactional"="true");
    • Contoh 5: Modifikasi properti tabel Delta Lake PK

      -- Perbarui jumlah bucket untuk tabel Delta Lake Primary Key (PK) terpartisi.
      ALTER TABLE delta_table_test_par SET tblproperties("write.bucket.num"="64");
      
      -- Perbarui jumlah bucket untuk tabel Delta Lake PK non-partisi. Setelah pembaruan, data historis didistribusikan ulang berdasarkan jumlah bucket baru.
      ALTER TABLE delta_table_test_nonpar REWRITE tblproperties("write.bucket.num"="128");
      
      -- Perbarui properti retain. Properti ini menentukan rentang waktu dalam jam di mana Anda dapat mengkueri status historis data menggunakan Time Travel.
      ALTER TABLE delta_table_test_par SET tblproperties("acid.data.retain.hours"="60");

Perbarui waktu modifikasi terakhir partisi

SQL MaxCompute menyediakan operasi touch untuk memperbarui LastModifiedTime suatu partisi dalam tabel partisi. Operasi ini mengubah LastModifiedTime menjadi waktu saat ini. MaxCompute kemudian menganggap data telah berubah dan menghitung ulang siklus hidupnya.

  • Batasan

    Untuk tabel partisi multi-level, Anda harus menentukan nilai untuk semua kolom kunci partisi.

  • Format perintah

    ALTER TABLE <table_name> touch PARTITION (<pt_spec>);
  • Parameter

    Parameter

    Wajib

    Deskripsi

    table_name

    Ya

    Nama tabel partisi yang partisinya ingin Anda perbarui. Jika tabel tidak ada, error dikembalikan.

    pt_spec

    Ya

    Informasi tentang partisi yang waktu modifikasi terakhirnya ingin Anda perbarui. Formatnya adalah (partition_col1 = partition_col_value1, partition_col2 = partition_col_value2, ...). partition_col adalah bidang partisi, dan partition_col_value adalah nilai partisi. Jika bidang partisi atau nilai partisi yang ditentukan tidak ada, error dikembalikan.

  • Contoh

    -- Perbarui LastModifiedTime partisi sale_date='202512', region='shanghai' dalam tabel sale_detail.
    ALTER TABLE sale_detail touch PARTITION (sale_date='202512', region='shanghai');

Modifikasi nilai partisi

SQL MaxCompute mendukung operasi rename untuk mengubah nilai partisi suatu tabel partisi.

  • Batasan

    • Anda tidak dapat memodifikasi nama kolom kunci partisi; hanya nilai yang sesuai dengan kolom kunci partisi tersebut yang dapat diubah.

    • Untuk tabel partisi multi-level, Anda harus menentukan nilai untuk semua kolom kunci partisi.

  • Format perintah

    ALTER TABLE <table_name> PARTITION (<pt_spec>) rename TO PARTITION (<new_pt_spec>);
  • Parameter

    Parameter

    Wajib

    Deskripsi

    table_name

    Ya

    Nama tabel yang nilai partisinya ingin Anda modifikasi.

    pt_spec

    Ya

    Informasi tentang partisi yang nilainya ingin Anda modifikasi. Formatnya adalah (partition_col1 = partition_col_value1, partition_col2 = partition_col_value2, ...). partition_col adalah bidang partisi, dan partition_col_value adalah nilai partisi. Jika bidang partisi atau nilai partisi yang ditentukan tidak ada, error dikembalikan.

    new_pt_spec

    Ya

    Informasi tentang partisi setelah modifikasi. Formatnya adalah (partition_col1 = new_partition_col_value1, partition_col2 = new_partition_col_value2, ...). partition_col adalah bidang partisi, dan new_partition_col_value adalah nilai partisi baru.

  • Contoh

    -- Modifikasi nilai partisi dalam tabel sale_detail.
    ALTER TABLE sale_detail PARTITION (sale_date = '201312', region = 'hangzhou') rename TO PARTITION (sale_date = '201310', region = 'beijing');

Gabung partisi

SQL MaxCompute menyediakan operasi merge partition untuk menggabungkan beberapa partisi dari tabel partisi yang sama menjadi satu partisi. Data dari partisi sumber dipindahkan ke partisi tujuan, lalu partisi sumber dihapus.

  • Batasan

    • Tabel asing tidak didukung. Jika Anda menggabungkan partisi dari tabel terkluster, partisi hasilnya tidak lagi terkluster.

    • Anda dapat menggabungkan maksimal 4.000 partisi sekaligus.

  • Format perintah

    ALTER TABLE <table_name> MERGE [IF EXISTS] PARTITION (<predicate>) [, PARTITION(<predicate2>) ...] overwrite PARTITION (<fullpartitionSpec>) [purge];
  • Parameter

    Parameter

    Wajib

    Deskripsi

    table_name

    Ya

    Nama tabel partisi yang partisinya ingin Anda gabungkan.

    IF EXISTS

    Tidak

    Jika Anda tidak menentukan IF EXISTS dan partisi tidak ada, pernyataan gagal dan mengembalikan error. Jika Anda menentukan IF EXISTS tetapi tidak ada partisi yang memenuhi kondisi merge, tidak ada partisi baru yang dibuat. Jika data sumber dimodifikasi secara konkuren oleh operasi seperti insert, rename, atau drop selama eksekusi, error dikembalikan bahkan jika Anda menentukan IF EXISTS.

    predicate

    Ya

    Kondisi yang harus dipenuhi oleh partisi yang akan digabungkan.

    fullpartitionSpec

    Ya

    Informasi tentang partisi tujuan.

    purge

    Tidak

    Kata kunci opsional. Jika Anda menentukan kata kunci ini, direktori sesi akan dibersihkan. Secara default, log dalam tiga hari terakhir dibersihkan. Untuk informasi lebih lanjut, lihat Purge.

  • Contoh

    • Contoh 1: Gabungkan partisi yang memenuhi kondisi tertentu ke partisi tujuan.

      -- Lihat partisi dari tabel partisi.
      SHOW PARTITIONS sale_detail;
      
      -- Hasil contoh:
      sale_date=202512/region=beijing
      sale_date=202512/region=shanghai
      sale_date=202602/region=beijin
      
      -- Gabungkan semua partisi yang memenuhi kondisi sale_date='201512' ke partisi sale_date='202601', region='hangzhou'.
      ALTER TABLE sale_detail MERGE PARTITION(sale_date='202512') overwrite PARTITION(sale_date='202601', region='hangzhou');
      
      -- Lihat partisi setelah penggabungan.
      SHOW PARTITIONS sale_detail;
      
      -- Hasil contoh:
      sale_date=202601/region=hangzhou
      sale_date=202602/region=beijing                   
    • Contoh 2: Gabungkan beberapa partisi yang ditentukan ke partisi tujuan.

      -- Gabungkan beberapa partisi yang ditentukan.
      ALTER TABLE sale_detail MERGE IF EXISTS 
        PARTITION(sale_date='202601', region='hangzhou'), 
        PARTITION(sale_date='202602', region='beijing') 
        overwrite PARTITION(sale_date='202603', region='shanghai') purge;
      
      -- Lihat partisi dari tabel partisi.
      SHOW PARTITIONS sale_detail;
      
      -- Hasil contoh:
      sale_date=202603/region=shanghai

Daftar semua partisi

Anda dapat mendaftarkan semua partisi dalam suatu tabel. Jika tabel tidak ada atau bukan tabel partisi, operasi ini mengembalikan error.

  • Format perintah

    SHOW PARTITIONS <table_name>; 
  • Parameter

    table_name: Wajib. Nama tabel partisi yang partisinya ingin Anda lihat.

  • Contoh

    -- Daftarkan semua partisi dalam tabel sale_detail.
    SHOW PARTITIONS sale_detail;
    
    -- Hasil contoh:
    sale_date=202603/region=shanghai

Lihat informasi partisi

Anda dapat melihat informasi tentang partisi tertentu dalam tabel partisi.

  • Format perintah

    DESC <table_name> PARTITION (<pt_spec>);
  • Parameter

    Parameter

    Wajib

    Deskripsi

    table_name

    Ya

    Nama tabel partisi yang informasi partisinya ingin Anda lihat.

    pt_spec

    Ya

    Informasi tentang partisi yang ingin Anda lihat. Formatnya adalah partition_col1=col1_value1, partition_col2=col2_value1.... Untuk tabel partisi multi-level, Anda harus menentukan semua nilai partisi.

  • Contoh

    -- Kueri informasi partisi dalam tabel partisi sale_detail.
    DESC sale_detail PARTITION (sale_date='202603',region='shanghai');
    -- Hasil berikut dikembalikan:
    +------------------------------------------------------------------------------------+
    | PartitionSize: 0                                                                   |
    +------------------------------------------------------------------------------------+
    | CreateTime:               2026-01-13 11:35:49                                      |
    | LastDDLTime:              2026-01-13 11:35:49                                      |
    | LastModifiedTime:         2026-01-13 11:35:49                                      |
    +------------------------------------------------------------------------------------+
    
    OK

Hapus partisi

Anda dapat menghapus partisi dari tabel partisi yang sudah ada.

MaxCompute memungkinkan Anda menghapus partisi berdasarkan kondisi filter. Untuk menghapus beberapa partisi yang memenuhi aturan tertentu sekaligus, Anda dapat menentukan ekspresi sebagai kondisi filter guna mencocokkan dan menghapus partisi dalam operasi batch.

  • Batasan

    • Setiap klausa filter partisi hanya dapat mengakses satu kolom kunci partisi.

    • Fungsi yang digunakan dalam ekspresi harus berupa fungsi skalar bawaan.

  • Catatan

    • Setelah Anda menghapus partisi, penggunaan penyimpanan proyek MaxCompute Anda berkurang.

    • Anda dapat menggunakan fitur Lifecycle MaxCompute untuk menghapus partisi lama secara otomatis.

  • Format perintah

    • Tanpa kondisi filter

      -- Hapus satu partisi sekaligus.
      ALTER TABLE <table_name> DROP [IF EXISTS] PARTITION <pt_spec>;
      -- Hapus beberapa partisi sekaligus.
      ALTER TABLE <table_name> DROP [IF EXISTS] PARTITION <pt_spec>,PARTITION <pt_spec>[,PARTITION <pt_spec>....];
    • Kondisi filter

      ALTER TABLE <table_name> DROP [IF EXISTS] PARTITION <partition_filtercondition>;
  • Parameter

    Parameter

    Wajib

    Deskripsi

    table_name

    Ya

    Nama tabel partisi tempat Anda ingin menghapus partisi.

    IF EXISTS

    Tidak

    Jika Anda tidak menentukan IF EXISTS dan partisi tidak ada, error dikembalikan.

    pt_spec

    Ya

    Partisi yang akan dihapus. Formatnya adalah (partition_col1 = partition_col_value1, partition_col2 = partition_col_value2, ...). partition_col adalah bidang partisi, dan partition_col_value adalah nilai partisi. Nama bidang partisi tidak peka huruf besar/kecil. Nilai partisi peka huruf besar/kecil.

    partition_filtercondition

    Tidak

    Wajib saat Anda menentukan kondisi filter. Kondisi filter partisi. Parameter ini tidak peka huruf besar/kecil. Formatnya sebagai berikut:

    partition_filtercondition
        : PARTITION (<partition_col> <relational_operators> <partition_col_value>)
        | PARTITION (scalar(<partition_col>) <relational_operators> <partition_col_value>)
        | PARTITION (<partition_filtercondition1> AND|OR <partition_filtercondition2>)
        | PARTITION (NOT <partition_filtercondition>)
        | PARTITION (<partition_filtercondition1>)[,PARTITION (<partition_filtercondition2>), ...]

    Berikut penjelasan detailnya.

    • partition_col: Nama partisi.

    • relational_operators: Operator relasional. Untuk informasi lebih lanjut, lihat Operator.

    • partition_col_value: Nilai atau ekspresi reguler yang akan dibandingkan dengan nilai kolom kunci partisi. Tipe data nilai harus sama dengan tipe data kolom kunci partisi.

    • scalar(): Fungsi skalar. Fungsi skalar menghasilkan nilai skalar berdasarkan nilai input. Nilai kolom kunci partisi (partition_col) diproses lalu dibandingkan dengan partition_col_value berdasarkan relational_operators yang ditentukan.

    • Kondisi filter partisi mendukung operator logika NOT, AND, dan OR. Anda dapat menggunakan klausa filter NOT untuk mendapatkan komplemen dari aturan filter. Anda juga dapat menggunakan beberapa klausa filter dengan operator AND atau OR untuk membentuk aturan pencocokan partisi keseluruhan.

    • Anda dapat menentukan beberapa klausa filter partisi. Jika beberapa klausa filter partisi dipisahkan dengan koma (,), klausa tersebut digabung menggunakan operator logika OR untuk membentuk aturan pencocokan partisi keseluruhan.

  • Contoh

    • Tanpa kondisi filter

      -- Hapus partisi yang berisi catatan penjualan wilayah Shanghai pada Maret 2026 dari tabel sale_detail.
      ALTER TABLE sale_detail DROP IF EXISTS PARTITION(sale_date='202603',region='shanghai'); 
      -- Hapus dua partisi yang berisi catatan penjualan wilayah Hangzhou dan Shanghai pada Desember 2024 dari tabel sale_detail.
      ALTER TABLE sale_detail DROP IF EXISTS PARTITION(sale_date='202412',region='hangzhou'),PARTITION(sale_date='202412',region='shanghai');
    • Tentukan kriteria filter

      • Tabel partisi

        -- Buat tabel partisi.
        CREATE TABLE IF NOT EXISTS sale_detail_del(
        shop_name     STRING,
        customer_id   STRING,
        total_price   DOUBLE)
        partitioned BY (sale_date STRING);
        
        -- Tambahkan partisi.
        ALTER TABLE sale_detail_del ADD if NOT EXISTS
        PARTITION (sale_date= '201910') PARTITION (sale_date= '201911') PARTITION (sale_date= '201912')
        PARTITION (sale_date= '202001') PARTITION (sale_date= '202002') PARTITION (sale_date= '202003')
        PARTITION (sale_date= '202004') PARTITION (sale_date= '202005') PARTITION (sale_date= '202006')
        PARTITION (sale_date= '202007');
        
        -- Hapus partisi dalam batch.
        ALTER TABLE sale_detail_del DROP IF EXISTS PARTITION(sale_date < '201911');
        ALTER TABLE sale_detail_del DROP IF EXISTS PARTITION(sale_date >= '202007');
        ALTER TABLE sale_detail_del DROP IF EXISTS PARTITION(sale_date LIKE '20191%');
        ALTER TABLE sale_detail_del DROP IF EXISTS PARTITION(sale_date IN ('202002','202004','202006'));
        ALTER TABLE sale_detail_del DROP IF EXISTS PARTITION(sale_date BETWEEN '202001' AND '202007');
        ALTER TABLE sale_detail_del DROP IF EXISTS PARTITION(substr(sale_date, 1, 4) = '2020');
        ALTER TABLE sale_detail_del DROP IF EXISTS PARTITION(sale_date < '201912' OR sale_date >= '202006');
        ALTER TABLE sale_detail_del DROP IF EXISTS PARTITION(sale_date > '201912' AND sale_date <= '202004');
        ALTER TABLE sale_detail_del DROP IF EXISTS PARTITION(NOT sale_date > '202004');
        
        -- Beberapa ekspresi filter partisi didukung. Ekspresi digabung menggunakan operator logika OR.
        ALTER TABLE sale_detail_del DROP IF EXISTS PARTITION(sale_date < '201911'), PARTITION(sale_date >= '202007');
        
        -- Tambahkan partisi dalam format lain.
        ALTER TABLE sale_detail_del ADD IF NOT EXISTS
        PARTITION (sale_date= '2019-10-05') 
        PARTITION (sale_date= '2019-10-06') 
        PARTITION (sale_date= '2019-10-07');
        
        -- Hapus partisi dalam batch menggunakan ekspresi reguler untuk mencocokkan partisi.
        ALTER TABLE sale_detail_del DROP IF EXISTS PARTITION(sale_date RLIKE '2019-\\d+-\\d+');
      • Tabel partisi multi-level

        -- Buat tabel partisi multi-level.
        CREATE TABLE IF NOT EXISTS region_sale_detail(
        shop_name     STRING,
        customer_id   STRING,
        total_price   DOUBLE)
        partitioned BY (sale_date STRING , region STRING );
        
        -- Tambahkan partisi.
        ALTER TABLE region_sale_detail ADD IF NOT EXISTS
        PARTITION (sale_date= '201910',region = 'shanghai') PARTITION (sale_date= '201911',region = 'shanghai')
        PARTITION (sale_date= '201912',region = 'shanghai') PARTITION (sale_date= '202001',region = 'shanghai')
        PARTITION (sale_date= '202002',region = 'shanghai') PARTITION (sale_date= '201910',region = 'beijing')
        PARTITION (sale_date= '201911',region = 'beijing') PARTITION (sale_date= '201912',region = 'beijing')
        PARTITION (sale_date= '202001',region = 'beijing') PARTITION (sale_date= '202002',region = 'beijing');
        
        -- Jalankan pernyataan berikut untuk menghapus partisi dari tabel partisi multi-level dalam batch. Dua kondisi pencocokan digabung menggunakan operator logika OR. Semua partisi dengan sale_date kurang dari 201911 atau region beijing dihapus.
        ALTER TABLE region_sale_detail DROP IF EXISTS PARTITION(sale_date < '201911'),PARTITION(region = 'beijing');
        
        -- Untuk menghapus partisi dengan sale_date kurang dari 201911 dan region beijing, gunakan metode berikut.
        ALTER TABLE region_sale_detail DROP IF EXISTS PARTITION(sale_date < '201911', region = 'beijing');

        Saat menghapus partisi dari tabel partisi multi-level dalam operasi batch, Anda tidak dapat membuat kondisi komposit berdasarkan beberapa kolom kunci partisi dalam klausa filter partition untuk mencocokkan partisi. Pernyataan berikut mengembalikan pesan error: FAILED: ODPS-0130071:[1,82] Semantic analysis exception - invalid column reference region, partition expression must have one and only one column reference.

        -- Satu klausa filter partisi hanya dapat mengakses satu kolom kunci partisi. Pernyataan berikut mengembalikan error.
        ALTER TABLE region_sale_detail DROP IF EXISTS PARTITION(sale_date < '201911' AND region = 'beijing');

Bersihkan data dari partisi

Anda dapat membersihkan data dari partisi tertentu dalam tabel partisi.

MaxCompute memungkinkan Anda membersihkan data dari partisi berdasarkan kondisi filter. Untuk membersihkan data dari satu atau beberapa partisi yang memenuhi aturan tertentu sekaligus, Anda dapat menentukan ekspresi sebagai kondisi filter guna mencocokkan partisi dan membersihkan datanya dalam operasi batch.

  • Format perintah

    • Tanpa kondisi filter

      TRUNCATE TABLE <table_name> PARTITION <pt_spec>[, PARTITION <pt_spec>....];
    • Tentukan kriteria filter

      TRUNCATE TABLE <table_name> PARTITION <partition_filtercondition>;
  • Parameter

    Parameter

    Wajib

    Deskripsi

    table_name

    Ya

    Nama tabel partisi tempat Anda ingin membersihkan data partisi.

    pt_spec

    Ya

    Partisi tempat Anda ingin membersihkan data. Formatnya adalah (partition_col1 = partition_col_value1, partition_col2 = partition_col_value2, ...). partition_col adalah bidang partisi, dan partition_col_value adalah nilai partisi. Nama bidang partisi tidak peka huruf besar/kecil. Nilai partisi peka huruf besar/kecil.

    partition_filtercondition

    Tidak

    Wajib saat Anda menentukan kondisi filter. Kondisi filter partisi. Parameter ini tidak peka huruf besar/kecil. Formatnya sebagai berikut:

    partition_filtercondition
        : PARTITION (<partition_col> <relational_operators> <partition_col_value>)
        | PARTITION (scalar(<partition_col>) <relational_operators> <partition_col_value>)
        | PARTITION (<partition_filtercondition1> AND|OR <partition_filtercondition2>)
        | PARTITION (NOT <partition_filtercondition>)
        | PARTITION (<partition_filtercondition1>)[,PARTITION (<partition_filtercondition2>), ...]

    Detailnya sebagai berikut:

    • partition_col: Nama partisi.

    • relational_operators: Operator relasional. Untuk informasi lebih lanjut, lihat Operator.

    • partition_col_value: Nilai atau ekspresi reguler yang akan dibandingkan dengan nilai kolom kunci partisi. Tipe data nilai harus sama dengan tipe data kolom kunci partisi.

    • scalar(): Fungsi skalar. Fungsi skalar menghasilkan nilai skalar berdasarkan nilai input. Nilai kolom kunci partisi (partition_col) diproses lalu dibandingkan dengan partition_col_value berdasarkan relational_operators yang ditentukan.

    • Kondisi filter partisi mendukung operator logika NOT, AND, dan OR. Anda dapat menggunakan klausa filter NOT untuk mendapatkan komplemen dari aturan filter. Anda juga dapat menggunakan beberapa klausa filter dengan operator AND atau OR untuk membentuk aturan pencocokan partisi keseluruhan.

    • Anda dapat menentukan beberapa klausa filter partisi. Jika beberapa klausa filter partisi dipisahkan dengan koma (,), klausa tersebut digabung menggunakan operator logika OR untuk membentuk aturan pencocokan partisi keseluruhan.

  • Contoh

    • Tanpa kondisi filter

      -- Bersihkan partisi yang berisi catatan penjualan wilayah Hangzhou pada Januari 2026 dari tabel sale_detail.
      TRUNCATE TABLE sale_detail PARTITION(sale_date='202601',region='hangzhou');
      
      -- Bersihkan dua partisi yang berisi catatan penjualan wilayah Hangzhou dan Shanghai pada Desember 2025 dari tabel sale_detail.
      TRUNCATE TABLE sale_detail PARTITION(sale_date='202512',region='hangzhou'),  PARTITION(sale_date='202512',region='shanghai');
    • Tentukan kriteria filter

      -- Bersihkan beberapa partisi yang berisi catatan penjualan wilayah Hangzhou dengan sale_date yang dimulai dengan 2025 dari tabel sale_detail.
      TRUNCATE TABLE sale_detail PARTITION(sale_date LIKE '2025%' AND region='hangzhou');
    • Bersihkan tabel Delta Lake non-partisi

      -- Bersihkan tabel non-partisi. Tabel harus berupa tabel non-partisi. Jika tidak, error dikembalikan.
      TRUNCATE TABLE non_par_table; 

Referensi

Untuk informasi lebih lanjut tentang perintah operasi tabel, lihat topik berikut: