All Products
Search
Document Center

Hologres:Akses data Paimon dengan Katalog DLF

Last Updated:Sep 04, 2026

Mulai dari V3.2, Hologres dapat mengakses tabel Paimon melalui katalog Data Lake Formation (DLF). Petakan katalog DLF ke database eksternal atau server asing untuk melakukan kueri, menulis, dan time-travel pada tabel Paimon dalam SQL—tanpa perlu memigrasikan data ke penyimpanan native Hologres.

Catatan penggunaan

Kemampuan berdasarkan versi:

Kemampuan

Versi minimum

Baca tabel Paimon melalui Database Eksternal

V3.2

Time Travel, kueri branch, dan mirroring data

V3.2

Tabel Dinamis (refresh penuh, bertahap, dan otomatis)

V3.2

Menulis ke tabel primary key Paimon (INSERT INTO, INSERT OVERWRITE, UPDATE, DELETE)

V4.0

Baca data dari tag yang sesuai dengan snapshot yang telah kedaluwarsa

V3.2.6 / V4.0.6

Baca dan tulis data Blob Paimon (dipetakan ke tipe data BYTES di Hologres)

V4.2

Baca langsung Bitmap File Index (format indeks V2) pada tabel Paimon untuk melewati baris yang tidak relevan dalam kueri equality (=) dan IN. Diaktifkan secara default. Lihat Percepat kueri dengan Bitmap File Index.

V5.0

Pengecualian utama:

  • Layanan DLF harus berada di wilayah yang sama dengan instans Hologres.

  • Time Travel, kueri branch, dan mirroring data hanya tersedia untuk tabel asing yang dipetakan melalui database eksternal—bukan untuk tabel asing yang dibuat melalui server asing.

  • Time Travel tidak didukung pada tabel dengan schema evolution atau dalam kueri Tabel Dinamis.

  • Mirroring data tidak mendukung tabel primary key Paimon.

  • Instans replika read-only tidak mendukung akselerasi data lake.

  • Menulis ke tabel bucketing dinamis Paimon (dibuat dengan bucket = -1 atau tanpa parameter bucket) tidak didukung.

  • TRUNCATE tidak didukung pada tabel asing. Gunakan INSERT OVERWRITE dengan data kosong sebagai gantinya.

  • UPDATE dan DELETE hanya didukung pada tabel primary key dengan Merge Engine deduplicate atau partial-update. Memperbarui kolom primary key tidak didukung.

  • Untuk tabel partial-update, aktifkan properti partial-update.remove-record-on-delete sebelum menjalankan DELETE.

  • Tabel asing tidak mendukung transaksi DML campuran. Hanya operasi DML tunggal yang menggunakan protokol two-phase commit untuk menjamin atomicity.

  • Data partisi default (nilai partisi kosong atau NULL) tidak dapat dibaca dari Paimon.

  • Bitmap File Index hanya berlaku untuk predikat equality (=) dan IN. Predikat rentang (>, <, BETWEEN) dan pencocokan pola (LIKE) tidak menggunakannya.

  • Kolom akan mendapatkan Bitmap File Index hanya jika Anda mendeklarasikannya dalam properti tabel file-index.bitmap.columns. Kolom yang tidak dideklarasikan tidak mendapatkan akselerasi bitmap.

  • Tipe data FLOAT, DOUBLE, dan DECIMAL tidak dapat diindeks dengan Bitmap File Index.

Prasyarat

Pastikan Anda telah:

Catatan

Mulai dari V5.0, Hologres mengaktifkan akselerasi data lake secara default. Untuk menonaktifkannya, gunakan Konsol Hologres.

Hubungkan ke katalog DLF

Hologres mendukung dua pendekatan untuk menghubungkan ke katalog DLF:

Pendekatan

Paling cocok untuk

Database Eksternal (direkomendasikan)

Sebagian besar kasus penggunaan. Mendukung Time Travel, kueri branch, dan mirroring data. Memerlukan V3.2+.

Server asing (legacy)

Lingkungan DLF 1.0 atau beban kerja yang tidak memerlukan Time Travel.

Gunakan Database Eksternal (direkomendasikan)

Database Eksternal memetakan katalog DLF ke Hologres sehingga Anda dapat melakukan kueri, mengelola, dan mencerminkan tabel Paimon. Fitur ini mendukung dua mode autentikasi:

Mode

Kapan digunakan

Mode SLR (default)

Akses katalog dengan identitas Alibaba Cloud saat ini. Cocok untuk pengaturan single-account.

Mode STS

Akses lintas akun, atau ketika akun BASIC Hologres perlu mengakses katalog.

Mode SLR

Peran terkait layanan (SLR) memungkinkan Hologres mengakses layanan Alibaba Cloud lain atas nama Anda menggunakan identitas saat ini. Untuk instans yang baru dibeli atau ditingkatkan ke V2.2 atau lebih baru, SLR dibuat secara otomatis.

Untuk instans yang berjalan di bawah V2.2, buat SLR secara manual di halaman Otorisasi Cepat RAM.
  1. Hubungkan ke instans Hologres dan buat database eksternal.

    Parameter

    Wajib

    Deskripsi

    catalog_type

    Ya

    Atur ke paimon.

    metastore_type

    Ya

    Atur ke dlf-rest untuk DLF V2.5+.

    dlf_catalog

    Ya

    Nama katalog DLF yang akan dipetakan.

    comment

    Tidak

    Deskripsi untuk Database Eksternal.

       CREATE EXTERNAL DATABASE <ext_database_name> WITH
         catalog_type 'paimon',
         metastore_type 'dlf-rest',
         dlf_catalog '<dlf_catalog_name>',
         comment 'dlf catalog';
  2. Daftar skema dan tabel di database eksternal.

       -- Daftar skema
       SELECT * FROM hologres.hg_external_schemas('<ext_database_name>');
    
       -- Daftar tabel dalam skema
       SELECT * FROM hologres.hg_external_tables('<ext_database_name>', '<ext_schema_name>');
  3. Lakukan kueri data tabel.

       SELECT * FROM <ext_database_name>.<ext_schema_name>.<ext_table_name>;

Mode STS

Layanan Token Keamanan (STS) mengeluarkan kredensial temporary dengan cakupan dan masa berlaku terbatas. Gunakan mode STS untuk akses lintas akun atau ketika akun BASIC perlu mengakses katalog.

  1. Di Konsol RAM, buat peran RAM dan berikan izin AliyunDLFFullAccess atau AliyunDLFReadOnlyAccess. Lihat Buat peran RAM dan berikan izin.

  2. Perbarui kebijakan kepercayaan peran RAM agar Hologres dapat mengasumsikannya. Lihat Ubah kebijakan kepercayaan peran RAM.

       {
         "Statement": [
           {
             "Action": "sts:AssumeRole",
             "Effect": "Allow",
             "Principal": {
               "Service": [
                 "hologres.aliyuncs.com"
               ]
             }
           }
         ],
         "Version": "1"
       }
  3. Di Konsol Pembentukan Danau Data, berikan akses peran RAM ke database dan tabel target dalam katalog DLF.

  4. Buat database eksternal di Hologres, dengan menentukan peran RAM sebagai kebijakan autentikasi.

    Parameter

    Wajib

    Deskripsi

    catalog_type

    Ya

    Atur ke paimon.

    metastore_type

    Ya

    Atur ke dlf-rest untuk DLF V2.5+.

    dlf_catalog

    Ya

    Nama katalog DLF yang akan dipetakan.

    rolearn

    Ya

    ARN dari peran RAM yang akan diasumsikan. Format: acs:ram::<account_id>:role/<role_name>.

    comment

    Tidak

    Deskripsi untuk Database Eksternal.

       CREATE EXTERNAL DATABASE <ext_database_name> WITH
         catalog_type 'paimon',
         metastore_type 'dlf-rest',
         dlf_catalog '<dlf_catalog_name>',
         rolearn 'acs:ram::<account_id>:role/<role_name>',
         comment 'dlf catalog';
  5. Buat USER MAPPING untuk mengaitkan pengguna RAM atau akun BASIC dengan peran RAM.

    - Untuk sintaksis USER MAPPING, lihat CREATE USER MAPPING. - Untuk membuat pengguna RAM, lihat Buat pengguna RAM. - Untuk membuat akun BASIC, lihat Manajemen pengguna.
       CREATE USER MAPPING FOR "<ram_user_or_basic_account>"
       EXTERNAL DATABASE <ext_database_name>
       OPTIONS
       (
         rolearn 'acs:ram::<account_id>:role/<role_name>'
       );
  6. Login ke Konsol Hologres sebagai pengguna RAM, atau sambungkan kembali ke instans Hologres sebagai akun BASIC, lalu jalankan kueri.

       SELECT * FROM <ext_database_name>.<ext_schema_name>.<ext_table_name>;

Operasi lainnya:

Gunakan server asing (legacy)

Pendekatan server asing tidak mendukung Time Travel, kueri branch, atau mirroring data. Gunakan database eksternal untuk fitur-fitur tersebut.

Langkah 1: Buat foreign server.

Untuk DLF V2.5 dan lebih baru:

CREATE SERVER IF NOT EXISTS <server_name> FOREIGN DATA WRAPPER dlf_fdw OPTIONS (
  catalog_type 'paimon',
  metastore_type 'dlf-rest',
  dlf_catalog '<dlf_catalog_name>'
);

Parameter

Wajib

Deskripsi

catalog_type

Ya

Atur ke paimon.

metastore_type

Ya

Atur ke dlf-rest untuk DLF V2.5+.

dlf_catalog

Ya

Nama katalog DLF yang akan dipetakan.

Untuk DLF V1.0:

CREATE SERVER IF NOT EXISTS <server_name> FOREIGN DATA WRAPPER dlf_fdw OPTIONS (
  dlf_region '',
  dlf_endpoint 'dlf-share.<region>.aliyuncs.com',
  oss_endpoint 'oss-<region_id>-internal.aliyuncs.com',
  dlf_catalog '<dlf_catalog_name>'
);

Parameter

Wajib

Deskripsi

dlf_region

Ya

ID wilayah layanan DLF.

dlf_endpoint

Ya

Titik akhir layanan DLF. Format: dlf-share.<region>.aliyuncs.com.

oss_endpoint

Ya

Titik akhir internal OSS. Format: oss-<region_id>-internal.aliyuncs.com.

dlf_catalog

Ya

Nama katalog DLF yang akan dipetakan.

Untuk operasi server asing lainnya, lihat Operasi server asing tambahan.

Langkah 2: Buat tabel asing.

Gunakan IMPORT FOREIGN SCHEMA untuk mengimpor semua tabel dalam database DLF:

-- Impor semua tabel
IMPORT FOREIGN SCHEMA <dlf_db_name>
FROM SERVER <server_name>
INTO <holo_schema_name>
OPTIONS (if_table_exist 'update');

-- Impor tabel tertentu
IMPORT FOREIGN SCHEMA <dlf_db_name>
LIMIT TO (<table_name>[, ...])
FROM SERVER <server_name>
INTO <holo_schema_name>
OPTIONS (if_table_exist 'update');

Atau buat satu tabel asing dengan CREATE FOREIGN TABLE:

CREATE FOREIGN TABLE <foreign_table_name>
(
  <column_name> <data_type>
  [, ...]
)
SERVER <server_name>
OPTIONS
(
  schema_name '<dlf_db_name>',
  table_name '<dlf_table_name>'
);

Untuk detail sintaksis, lihat IMPORT FOREIGN SCHEMA dan CREATE FOREIGN TABLE.

Baca data Paimon

Kumpulkan statistik untuk optimasi kueri

Jalankan ANALYZE atau AUTO ANALYZE untuk mengumpulkan statistik tabel. Pengoptimal kueri menggunakan statistik ini untuk menyusun rencana kueri optimal.

-- Kumpulkan statistik untuk semua kolom
ANALYZE <ext_database_name>.<ext_schema_name>.<ext_table_name>;

-- Kumpulkan statistik untuk kolom tertentu (lebih akurat; gunakan untuk kolom filter)
ANALYZE <ext_database_name>.<ext_schema_name>.<ext_table_name>(<col_name>[, <col_name>]);

-- Aktifkan AUTO ANALYZE untuk Database Eksternal
ALTER EXTERNAL DATABASE <ext_database_name> WITH enable_auto_analyze 'true';

Untuk detail selengkapnya, lihat ANALYZE dan AUTO ANALYZE.

Kueri dengan Time Travel

Mulai dari V3.2, Hologres mendukung kueri snapshot historis tabel Paimon berdasarkan timestamp, versi (ID snapshot), atau tag.

Penting

Time Travel hanya didukung untuk tabel asing yang dipetakan melalui database eksternal. Fitur ini tidak didukung pada tabel dengan schema evolution atau dalam kueri Tabel Dinamis.

Daftar snapshot yang tersedia:

SELECT * FROM hologres.hg_list_snapshots('<ext_database_name>.<ext_schema_name>.<ext_table_name>');

Tabel snapshot mengembalikan bidang-bidang berikut:

Bidang

Type

Deskripsi

branch_name

TEXT

Nama branch

snapshot_id

TEXT

ID Snapshot

schema_id

TEXT

ID Skema

commit_kind

TEXT

Jenis commit

commit_time

TIMESTAMPTZ

Waktu commit

extend_info

TEXT (JSON)

Sisa properti snapshot Paimon

Anda juga dapat melakukan kueri tabel sistem snapshot Paimon menggunakan fungsi hg_list_versions. Untuk tabel Paimon, versi sesuai dengan ID Snapshot.

SELECT * FROM hologres.hg_list_versions('<ext_database_name>.<ext_schema_name>.<ext_table_name>');

Daftar tag yang tersedia:

SELECT * FROM hologres.hg_list_tags('<ext_database_name>.<ext_schema_name>.<ext_table_name>');

Bidang

Tipe

Deskripsi

branch_name

TEXT

Nama cabang

tag_name

TEXT

Nama tag

snapshot_id

TEXT

ID Snapshot

schema_id

TEXT

ID Skema

commit_time

TIMESTAMPTZ

Waktu commit

extend_info

TEXT (JSON)

Sisa properti tag Paimon

Kueri berdasarkan timestamp:

SELECT * FROM <ext_database_name>.<ext_schema_name>.<ext_table_name>
FOR TIMESTAMP AS OF '<timestamp>';

Kueri berdasarkan versi (ID snapshot):

SELECT * FROM '<ext_database_name>.<ext_schema_name>.<ext_table_name>'
FOR VERSION AS OF '<version>';

Kueri berdasarkan tag:

SELECT * FROM '<ext_database_name>.<ext_schema_name>.<ext_table_name>'
FOR TAG AS OF '<tag>';
Hologres V3.2.6 dan V4.0.6 serta versi lebih baru mendukung pembacaan data dari tag yang sesuai dengan snapshot Paimon yang telah kedaluwarsa.

Untuk informasi selengkapnya tentang tabel sistem Paimon, lihat tabel sistem Paimon.

Kueri branch Paimon

Mulai dari V3.2, Hologres dapat melakukan kueri data dari branch Paimon tertentu, termasuk snapshot historis di dalam branch tersebut.

Daftar branch yang tersedia:

SELECT * FROM hologres.hg_list_branches('<ext_database_name>.<ext_schema_name>.<ext_table_name>');

Bidang

Tipe

Deskripsi

branch_name

TEXT

Nama cabang

create_time

TIMESTAMPTZ

Waktu pembuatan branch

extend_info

TEXT (JSON)

Sisa properti branch Paimon

Kueri data cabang saat ini:

SELECT * FROM '<ext_database_name>.<ext_schema_name>.<ext_table_name>'
FOR branch AS OF '<branch_name>';
Jika scan.fallback-branch diatur pada tabel Paimon, Hologres secara otomatis membaca partisi yang hilang dari branch fallback. Lihat Kelola branch.

Kueri snapshot historis di dalam sebuah branch:

-- Berdasarkan timestamp
SELECT * FROM '<ext_database_name>.<ext_schema_name>.<ext_table_name>'
FOR branch AS OF '<branch_name>' TIMESTAMP AS OF '<timestamp>';

-- Berdasarkan tag
SELECT * FROM '<ext_database_name>.<ext_schema_name>.<ext_table_name>'
FOR branch AS OF '<branch_name>' TAG AS '<tag_name>';

Percepat kueri dengan mirroring tabel lake

Mulai dari V3.2, Hologres mendukung mirroring tabel lake, yang menyinkronkan metadata dan data tabel Paimon ke Hologres secara near-real-time atau pada interval terjadwal. Data yang dicerminkan disajikan dari penyimpanan Hologres, sehingga secara signifikan mengurangi latensi kueri. Mirroring tabel penuh dan mirroring parsial tabel terpartisi keduanya didukung.

Penting

Mirroring tabel lake tidak mendukung tabel primary key Paimon.

Untuk detail penyiapan, lihat Mirroring tabel lake.

Percepat kueri dengan Bitmap File Index

Mulai dari V5.0, Hologres membaca langsung Bitmap File Index (format indeks V2) pada tabel Paimon. Saat Anda memfilter kolom yang diindeks dengan predikat equality (=) atau IN, pembaca Hologres menggunakan bitmap untuk menemukan baris yang cocok dan melewati baris yang tidak relevan. Hal ini mengurangi jumlah data yang dipindai dan mempercepat kueri point serta kueri multi-nilai pada tabel lake. Kemampuan ini diaktifkan secara default.

Catatan

file-index.bitmap.columns adalah properti tabel Paimon. Properti ini mengontrol indeks bitmap tingkat file yang disimpan bersama file data di lake, dan Hologres mendorong filter ke indeks tersebut saat membaca tabel lake secara langsung. Jangan dikacaukan dengan data_mirroring_bitmap_columns, yang membangun indeks bitmap pada tabel yang dicerminkan di dalam Hologres. Lihat Mirroring tabel lake.

Cara kerja dan kapan berlaku:

  • Penulis Paimon menghasilkan indeks. Flink, Spark, dan mesin lain dapat menulisnya, dan Hologres juga menghasilkannya secara otomatis saat Anda menjalankan INSERT terhadap tabel asing Paimon—asalkan file-index.bitmap.columns dideklarasikan pada tabel.

  • Indeks disimpan per file data. Setiap file data memiliki file pendamping .index yang namanya diawali dengan nama file data.

  • Pembaca Hologres mendeteksi versi format indeks secara otomatis, dan kedua format dapat berdampingan dalam tabel yang sama: format indeks V2 menggunakan parser V2, format indeks V1 tetap menggunakan parser V1. Kueri yang ada tidak terpengaruh.

  • Tipe kolom yang didukung untuk indeks mencakup tipe panjang tetap (SMALLINT, INT, BIGINT, DATE, TIME, TIMESTAMP, dan sebagainya) serta tipe panjang variabel (STRING atau TEXT). FLOAT, DOUBLE, dan DECIMAL tidak didukung.

  • Hanya predikat equality (=) dan IN yang mendapat manfaat. Predikat rentang, LIKE, dan predikat lainnya tidak menggunakan indeks bitmap.

Langkah-langkah:

  1. Deklarasikan kolom indeks bitmap saat membuat tabel.

    -- Buat tabel asing Paimon dan deklarasikan kolom indeks bitmap
    CREATE EXTERNAL TABLE EXT_DATABASE_NAME.EXT_SCHEMA_NAME.EXT_TABLE_NAME (
      id        INT,
      c_id      INT,
      c_name    TEXT
    )
    WITH (
      "table_format"              = 'paimon',
      "file_format"               = 'parquet',       -- Baik Parquet maupun ORC mendukung pembacaan Bitmap File Index
      "bucket"                    = '4',
      "bucket-key"                = 'id',
      "file-index.bitmap.columns" = 'c_id,c_name'    -- Kolom yang diindeks, dipisahkan koma
    );
    Catatan

    Untuk menurunkan kolom tertentu ke format indeks V1, atur "file-index.bitmap.<COLUMN_NAME>.version" = '1' untuk kolom tersebut. Default-nya adalah format indeks V2.

  2. Verifikasi bahwa sakelar Bitmap File Index diaktifkan. Hologres mengaktifkan sakelar berikut secara default mulai dari V5.0. Untuk mengonfirmasi statusnya atau mengaktifkannya secara manual, jalankan:

    -- Flag global yang mengontrol pembacaan Bitmap File Index
    SELECT hg_admin_command('set_global_flag','enable_paimon_bitmap_index=true');                    -- Sakelar utama
    SELECT hg_admin_command('set_global_flag','enable_push_bitmap_to_fse_parquet_reader=true');      -- Pushdown di pembaca Parquet
    SELECT hg_admin_command('set_global_flag','enable_push_bitmap_to_fse_orc_reader=true');          -- Pushdown di pembaca ORC
  3. Jalankan kueri equality atau IN, lalu konfirmasi bahwa indeks berlaku dengan EXPLAIN (ANALYZE).

    -- Kueri dan verifikasi
    EXPLAIN (ANALYZE)
    SELECT count(*) FROM EXT_DATABASE_NAME.EXT_SCHEMA_NAME.EXT_TABLE_NAME WHERE c_id = 1;

    Dalam rencana kueri, node Seq Scan tingkat paling bawah melaporkan bitmap_used=N, di mana N adalah jumlah predikat yang dilayani oleh indeks bitmap. scan_rows konvergen ke jumlah baris yang cocok alih-alih jumlah baris tabel penuh. Kedua sinyal ini berarti indeks berlaku. Contoh output:

    ->  Seq Scan on EXT_TABLE_NAME  (cost=0.00..5.03 rows=1000 width=1)
          Filter: (c_id = 1)
          Engine: FSE
          Foreign Table Type: DLF
        [id=1 split_count=1 rows=4(4/4/4) scan_rows=4(4/4/4) bitmap_used=1]
Catatan

Bitmap File Index berlaku per file data. Untuk percepatan terbaik, pastikan nilai kolom filter Anda terkonsentrasi di sesedikit mungkin file data. Pada tabel bucketed, indeks berlaku secara independen di dalam file data setiap bucket.

Gunakan Tabel Dinamis untuk refresh berkelanjutan

Tabel Dinamis secara otomatis memproses dan menyimpan hasil agregat dari satu atau beberapa tabel asing Paimon, dengan strategi refresh bawaan. Tabel asing MaxCompute dan tabel asing DLF telah didukung sebagai tabel dasar sejak V3.0.

Penting

Tabel Dinamis tidak mendukung kueri Time Travel pada tabel atau branch Paimon.

Refresh penuh — mengganti semua data pada setiap siklus refresh:

CREATE DYNAMIC TABLE paimon_dt_table
WITH (
  auto_refresh_mode = 'full',
  freshness = '3 minutes'
) AS SELECT * FROM <ext_database_name>.<ext_schema_name>.<ext_table_name>;

Refresh bertahap — hanya memproses data baru atau yang berubah:

CREATE DYNAMIC TABLE paimon_dt_table_incremental
WITH (
  auto_refresh_mode = 'incremental',
  freshness = '3 minutes'
) AS SELECT * FROM <ext_database_name>.<ext_schema_name>.<ext_table_name>;

Refresh otomatis — secara otomatis memilih refresh penuh atau bertahap berdasarkan perubahan data:

CREATE DYNAMIC TABLE paimon_dt_table_auto
WITH (
  auto_refresh_mode = 'auto',
  freshness = '3 minutes'
) AS SELECT * FROM <ext_database_name>.<ext_schema_name>.<ext_table_name>;

Untuk detail selengkapnya, lihat Ikhtisar Tabel Dinamis.

Menulis ke tabel Paimon

Mulai dari V4.0, Hologres mendukung penulisan ke tabel primary key Paimon melalui database eksternal. Data di-shuffle berdasarkan bucket sebelum ditulis untuk mengurangi pembuatan file kecil. Mekanisme caching berbasis memori tersedia untuk tabel yang memerlukan caching, termasuk:

  • Tabel dengan Merge Engine diatur ke First Row

  • Tabel yang menghasilkan Changelog melalui mekanisme lookup

  • Tabel dengan Deletion Vector diaktifkan

INSERT INTO

Contoh berikut membuat tabel primary key Paimon dan memasukkan baris.

-- Buat tabel primary key Paimon
CREATE EXTERNAL TABLE <ext_database_name>.<ext_schema_name>.<ext_table_name> (
  id         BIGINT,
  customer_id BIGINT,
  item       TEXT,
  amount     FLOAT,
  dt         TEXT,
  PRIMARY KEY (id)
)
WITH (
  "table_format"  = 'paimon',
  "file_format"   = 'orc',
  "merge-engine"  = 'deduplicate',  -- Sesuaikan sesuai kebutuhan
  "bucket"        = '4'             -- Sesuaikan sesuai kebutuhan
);

-- Masukkan baris
INSERT INTO <ext_database_name>.<ext_schema_name>.<ext_table_name>
  (id, customer_id, item, amount, dt)
VALUES
  (1, 1001, 'apple',  3.50, '2025-09-10'),
  (2, 1002, 'banana', 2.00, '2025-09-10'),
  (3, 1003, 'orange', 4.20, '2025-09-11');

INSERT OVERWRITE

Contoh berikut membuat tabel append-only Paimon terpartisi dan menimpa partisi.

-- Buat tabel append-only Paimon terpartisi
CREATE EXTERNAL TABLE <ext_database_name>.<ext_schema_name>.<ext_table_name> (
  id     BIGINT,
  name   TEXT,
  amount FLOAT8,
  dt     TEXT
)
LOGICAL PARTITION BY LIST(dt)
WITH (
  "table_format" = 'paimon',
  "file_format"  = 'parquet',
  "merge-engine" = 'deduplicate',
  "bucket-key"   = 'id',
  "bucket"       = '2'
);

-- Timpa data
INSERT OVERWRITE <ext_database_name>.<ext_schema_name>.<ext_table_name>
  (id, name, amount, dt)
VALUES
  (1, 'Alice', 100.50, '2025-09-01'),
  (2, 'Bob',   200.00, '2025-09-01'),
  (3, 'Carol', 150.75, '2025-09-02');

UPDATE

UPDATE hanya didukung pada tabel primary key Paimon dengan Merge Engine deduplicate atau partial-update. Memperbarui kolom primary key tidak didukung.

UPDATE <ext_database_name>.<ext_schema_name>.<ext_table_name>
SET amount = 5
WHERE id = 1;

DELETE

DELETE hanya didukung pada tabel primary key Paimon dengan Merge Engine deduplicate atau partial-update. Untuk tabel partial-update, aktifkan properti partial-update.remove-record-on-delete sebelum menjalankan DELETE.

DELETE FROM <ext_database_name>.<ext_schema_name>.<ext_table_name>
WHERE id = 2;

Langkah selanjutnya