All Products
Search
Document Center

Hologres:Dukungan dan batasan Tabel Dinamis

Last Updated:Apr 25, 2026

Tabel Dinamis memungkinkan Anda membangun pipa data dan hierarki yang efisien, hemat biaya, serta otomatis. Topik ini menjelaskan dukungan dan batasan terkait Tabel Dinamis.

Incremental refresh

Tabel Dinamis dalam mode incremental refresh memiliki fitur dan batasan berikut.

Batasan

  • Penggunaan resource

    Mulai dari Hologres V3.1, tabel baru secara default menggunakan resource serverless untuk menjalankan tugas refresh. Jika instans tidak memiliki resource serverless yang diaktifkan, sistem akan beralih secara otomatis ke resource lokal. Tabel yang dibuat di Hologres V3.0 tetap menggunakan resource yang ditentukan saat pembuatan dan tidak beralih otomatis ke resource serverless.

  • Batasan pada tabel dasar

    • Hanya Tabel internal Hologres, tabel eksternal Paimon, dan Tabel Dinamis lain yang didukung sebagai tabel dasar. Untuk membuat Tabel Dinamis, Anda harus memiliki izin SELECT pada tabel dasar.

    • Secara default, Hologres V3.1 mengonsumsi data tabel dasar secara inkremental menggunakan metode stream. Dibandingkan dengan metode Binlog, metode stream menawarkan performa lebih baik dan tidak menimbulkan biaya penyimpanan tambahan. Jika tabel dasar Anda sebelumnya menggunakan metode Binlog sebelum V3.1, kami menyarankan agar Anda segera menonaktifkan Binlog untuk mencegah konsumsi penyimpanan tambahan. Untuk menonaktifkan Binlog, lihat Subscribe to Hologres Binlog.

    • Di Hologres V3.0, saat membuat Tabel Dinamis dalam mode incremental refresh, Binlog harus diaktifkan untuk tabel dasar. Namun, hal ini tidak diperlukan untuk tabel dimensi. Untuk informasi lebih lanjut tentang cara mengaktifkan Binlog, lihat Subscribe to Hologres Binlog.

  • Batasan pada kueri

    • Skenario yang didukung

      • Ekspresi skalar apa pun

      • Kondisi WHERE

      • Subkueri

      • Common Table Expressions (CTEs)

      • GROUP BY

      • CUBE

      • GROUPING SETS

      • Klausa HAVING

      • Filter agregat

      • UNION ALL

      • UNNEST

    • Skenario yang tidak didukung

      • Fungsi window

      • Subkueri IN

      • EXISTS atau NOT EXISTS

      • EXCEPT atau INTERSECT

      • ORDER BY

      • LIMIT atau OFFSET

    • Penggabungan multi-tabel:

      • Hologres V3.0 hanya mendukung equi-join (INNER JOIN atau LEFT JOIN) pada tabel dimensi, dan join tersebut harus menggunakan sintaksis FOR SYSTEM_TIME AS OF PROCTIME(). Penggabungan double-stream multi-tabel tidak didukung. Untuk informasi lebih lanjut, lihat Lookup join statements.

        Catatan

        Lookup join mengaitkan setiap catatan dengan versi terbaru data tabel dimensi pada waktu pemrosesan. Jika data tabel dimensi berubah setelah join dilakukan, data yang telah digabungkan sebelumnya tidak diperbarui.

      • Mulai dari Hologres V3.0.26, penggabungan double-stream multi-tabel didukung. Fitur ini setara dengan join OLAP standar atau double-stream join di Flink, termasuk INNER JOIN dan LEFT/RIGHT/FULL OUTER JOIN. Untuk informasi lebih lanjut, lihat CREATE DYNAMIC TABLE.

    • Fungsi: fungsi agregat seperti COUNT, SUM, MIN/MAX, dan COUNT DISTINCT didukung. Fungsi yang berjalan di Parallel Query Engine (PQE) tidak didukung. Tabel berikut menjelaskan fungsi lain yang didukung.

      Function

      Syntax

      Example

      Supported version

      RB_BUILD_AGG

      RB_BUILD_AGG(<column>)
      Catatan

      Parameter column mendukung tipe data INT32 dan INT64. Untuk informasi lebih lanjut, lihat RoaringBitmap functions.

      CREATE DYNAMIC TABLE daily_uv PARTITION BY list (day) 
        WITH (
          freshness = '5 minutes', 
          refresh_mode = 'incremental') 
        AS 
        SELECT day,
               game_id,
               gameversion,
               RB_BUILD_AGG(user_id) AS user_rb
          FROM base_table GROUP BY day, game_id, gameversion;

      V3.1 dan versi lebih baru

      STRING_AGG

      STRING_AGG([DISTINCT] column_expr, const_expr)
      Catatan
      • Tipe data: column_expr harus bertipe TEXT, CHAR, atau VARCHAR. const_expr harus berupa konstanta TEXT.

      • Klausa ORDER BY tidak didukung.

      • Mulai dari Hologres V3.1.10, STRING_AGG([DISTINCT] didukung.

      CREATE DYNAMIC TABLE string_agg_test_dt  
        WITH (
          freshness = '3 minutes', 
          refresh_mode = 'incremental') 
        AS 
        SELECT day,
               STRING_AGG(gameversion, ',') AS gameversion_list
          FROM base_table GROUP BY day;
      • V3.1 dan versi lebih baru

      • Mulai dari V3.1.10, STRING_AGG([DISTINCT] didukung.

      ARRAY_AGG

      ARRAY_AGG([DISTINCT] expr)
      Catatan
      • Tipe data: Parameter expr mendukung BOOL, semua tipe numerik, TEXT, dan BYTEA.

      • Klausa ORDER BY tidak didukung.

      • Mulai dari Hologres V3.1.10, ARRAY_AGG([DISTINCT] didukung.

      CREATE DYNAMIC TABLE array_agg_test_dt  
        WITH (
          freshness = '3 minutes', 
          refresh_mode = 'incremental') 
        AS 
        SELECT day,
               ARRAY_AGG(gameversion) AS gameversion_list
          FROM base_table GROUP BY day;
      • V3.1 dan versi lebih baru

      • Mulai dari Hologres V3.1.10, ARRAY_AGG([DISTINCT] didukung.

      ANY_VALUE

      Pada kueri agregat yang mengandung klausa GROUP BY, fungsi ini secara non-deterministik mengembalikan nilai dari salah satu baris dalam setiap kelompok.

      ANY_VALUE(expr)

      Fungsi ANY_VALUE hanya menerima tipe data INT dan BINARY.

      CREATE DYNAMIC TABLE dt_t0
      WITH (
        -- Properties of the dynamic table
        freshness = '1 minutes', 
        auto_refresh_mode = 'auto'
      )
      AS 
      SELECT a, any_value(c), SUM(b) FROM t0 GROUP BY a;

      V3.1.5 dan versi lebih baru

    • Mulai dari Hologres V3.1, Anda dapat mengonfigurasi Tabel Dinamis sebagai partisi logis. Properti partisi terkait dan pengaturan manajemen juga didukung.

Full refresh

Tabel Dinamis dalam mode full refresh memiliki fitur dan batasan berikut.

Fitur yang didukung

  • Tabel dasar: Fungsionalitasnya sama seperti tabel Hologres standar. Anda dapat menggunakan Tabel internal Hologres dan tabel eksternal, seperti dari MaxCompute, Data Lake Formation (DLF), dan Paimon, sebagai tabel dasar. Anda harus memiliki izin yang diperlukan pada tabel dasar untuk membuat Tabel Dinamis. Untuk informasi lebih lanjut, lihat Dynamic Table permissions.

  • Kueri: Semua fungsi, ekspresi SQL, dan tipe data yang saat ini didukung oleh Hologres juga didukung dalam mode full refresh.

  • Resource refresh: Secara default, tugas refresh menggunakan resource serverless. Anda juga dapat mengonfigurasi tugas agar menggunakan resource dari instans Anda saat ini.

Batasan

  • Anda tidak dapat mengubah mode refresh dari full refresh ke incremental refresh.

  • Di Hologres V3.0, jika Anda membuat VIEW pada Tabel Dinamis yang berada dalam mode full refresh, proses refresh untuk Tabel Dinamis tersebut gagal. Masalah ini telah diselesaikan di V3.1 dan versi lebih baru. Kami menyarankan agar Anda melakukan upgrade instans.

Batasan umum

Batasan pada tabel dinamis

  • Instans Hologres Anda harus V3.0 atau lebih baru.

  • Batasan pada properti tabel: Anda tidak dapat menetapkan primary key atau nilai field default. Mesin secara otomatis melakukan inferensi indeks tabel, tetapi Anda juga dapat menyetelnya secara manual sesuai kebutuhan bisnis Anda.

  • Hanya mode full refresh dan incremental refresh yang didukung. Fitur dan batasan yang didukung berbeda-beda tergantung modusnya. Untuk detailnya, lihat Full refresh dan Incremental refresh.

Batasan pada operasi DDL dan DML

Operation

Supported

CREATE DYNAMIC TABLE

Yes

RENAME DYNAMIC TABLE

Yes

RENAME DYNAMIC TABLE column

Yes

SELECT

Yes

Refresh

  • Didukung untuk tabel non-partisi dan tabel partisi anak.

  • Tidak didukung untuk tabel partisi induk.

DROP DYNAMIC TABLE

Yes

DROP DYNAMIC TABLE column

No

TRUNCATE DYNAMIC TABLE

No

DML (INSERT/UPDATE/DELETE) DYNAMIC TABLE

No

ADD column

No

Resharding

No

Catatan

Resharding pada tabel dasar tidak didukung.

CREATE TABLE AS/LIKE

No

Persyaratan izin

Operation

Required permissions

CREATE DYNAMIC TABLE

  • Izin CREATE TABLE.

  • Izin SELECT pada tabel dasar.

ALTER DYNAMIC TABLE

  • Izin CREATE TABLE.

  • Izin SELECT pada tabel dasar.

DROP DYNAMIC TABLE

Anda harus menjadi Pemilik Tabel Dinamis tersebut.

SELECT DYNAMIC TABLE

Izin SELECT pada Tabel Dinamis.

REFRESH DYNAMIC TABLE

Izin DML pada Tabel Dinamis.

Catatan

Refresh pada tabel partisi induk tidak didukung.

Untuk informasi lebih lanjut tentang pemberian izin pada Tabel Dinamis, lihat Hologres permission model.

Dampak operasi pada tabel dasar

Base table operation

Impact

RENAME <basetable_name>

  • Kueri pada Tabel Dinamis berhasil dijalankan.

  • Operasi refresh gagal.

RENAME <column not used by the Dynamic Table>

  • Kueri pada Tabel Dinamis berhasil dijalankan.

  • Operasi refresh berhasil dijalankan.

RENAME <column used by the Dynamic Table>

  • Kueri pada Tabel Dinamis berhasil dijalankan.

  • Operasi refresh berhasil dijalankan.

DROP <basetable_name>

  • Operasi DROP gagal.

  • Kueri pada Tabel Dinamis berhasil dijalankan.

DROP <basetable_name> CASCADE

Tabel Dinamis juga di-drop, dan tugas refresh-nya dibatalkan.

DROP <column not used by the Dynamic Table>

  • Kueri pada Tabel Dinamis berhasil dijalankan.

  • Operasi refresh berhasil dijalankan.

DROP <column used by the Dynamic Table>

Operasi DROP gagal.

TRUNCATE <basetable_name>

  • Jika Anda melakukan truncate pada tabel dasar sebelum Tabel Dinamis direfresh, kueri pada Tabel Dinamis mengembalikan data.

  • Jika Anda melakukan truncate pada tabel dasar setelah Tabel Dinamis direfresh, kueri pada Tabel Dinamis tidak mengembalikan data.

INSERT/DELETE/UPDATE/UPSERT <basetable_name>

Perubahan muncul di Tabel Dinamis setelah refresh berikutnya.