全部产品
Search
文档中心

Hologres:Cakupan dan batasan Tabel Dinamis

更新时间:Nov 12, 2025

Anda dapat menggunakan Tabel Dinamis untuk menerapkan alur data otomatis serta pelapisan yang efisien dan berbiaya rendah. Topik ini menjelaskan cakupan dan batasan Tabel Dinamis.

Pembaruan bertahap

Jika Tabel Dinamis diatur ke mode pembaruan bertahap, fitur berikut didukung dengan batasan tertentu:

Batasan

  • Penggunaan Sumber Daya

    Mulai dari V3.1, tabel baru menggunakan sumber daya arsitektur tanpa server secara default untuk menjalankan tugas pembaruan. Jika sumber daya arsitektur tanpa server tidak diaktifkan untuk instans tersebut, sistem secara otomatis beralih ke sumber daya lokal. Tabel yang dibuat di V3.0 terus menggunakan sumber daya pembaruan yang telah ditetapkan saat pembuatan dan tidak menggunakan sumber daya arsitektur tanpa server secara default.

  • Batasan Tabel Dasar

    • Hanya Tabel internal Hologres, tabel eksternal Paimon, dan Tabel Dinamis lainnya yang didukung sebagai tabel dasar. Anda harus memiliki izin akses ke tabel dasar untuk membuat Tabel Dinamis.

    • V3.1: Secara default, data dari tabel dasar dikonsumsi secara bertahap menggunakan metode Stream. Dibandingkan dengan metode binary logging, metode Stream memberikan kinerja yang lebih baik dan tidak menimbulkan biaya penyimpanan tambahan. Jika tabel dasar Anda menggunakan binary logging sebelum V3.1, Anda harus menonaktifkan binary logging untuk menghindari biaya penyimpanan tambahan. Untuk informasi selengkapnya tentang cara menonaktifkan binary logging, lihat Berlangganan log biner Hologres.

    • V3.0: Saat membuat Tabel Dinamis bertahap, binary logging harus diaktifkan untuk tabel dasar. Binary logging tidak perlu diaktifkan untuk tabel dimensi. Untuk informasi selengkapnya tentang cara mengaktifkan binary logging, lihat Berlangganan log biner Hologres.

  • Batasan Kueri

    • Ekspresi skalar apa pun didukung.

    • Kondisi WHERE, subkueri, Common Table Expressions (CTE), GROUP BY, CUBE, GROUPING SETS, pernyataan HAVING, Agg Filter, UNION ALL, dan UNNEST didukung.

    • Fungsi jendela, subkueri IN, EXISTS atau NOT EXISTS, EXCEPT atau INTERSECT, ORDER BY, LIMIT, atau OFFSET tidak didukung.

    • Gabungan multi-tabel:

      • V3.0 hanya mendukung equi-join tabel dimensi (INNER JOIN atau LEFT JOIN) dan harus menggunakan metode FOR SYSTEM_TIME AS OF PROCTIME(). JOIN dual-stream multi-tabel tidak didukung. Untuk informasi selengkapnya, lihat Pernyataan JOIN tabel dimensi.

        Catatan

        Semantik JOIN tabel dimensi adalah sebagai berikut: Setiap catatan data hanya digabungkan dengan versi terbaru data tabel dimensi pada waktu pemrosesan. Operasi JOIN hanya terjadi pada waktu pemrosesan. Jika data dalam tabel dimensi ditambahkan, diperbarui, atau dihapus setelah operasi JOIN, data tabel dimensi yang digabungkan tidak diperbarui.

      • Mulai dari V3.0.26, JOIN dual-stream multi-tabel didukung. JOIN ini merupakan JOIN reguler dalam pemrosesan analitik online (OLAP) atau JOIN dual-stream dalam Flink, dan mencakup INNER JOIN, LEFT/RIGHT/FULL OUTER JOIN. Untuk informasi selengkapnya, lihat CREATE DYNAMIC TABLE.

    • Fungsi: Fungsi agregasi seperti COUNT, SUM, MIN/MAX, dan COUNT DISTINCT didukung. Tabel berikut menjelaskan fungsi-fungsi lain yang didukung:

      Nama fungsi

      Sintaksis

      Contoh Tabel Dinamis

      Versi yang didukung

      RB_BUILD_AGG

      RB_BUILD_AGG(<column>)
      Catatan

      Parameter kolom mendukung tipe data int32 dan int64. Untuk informasi lebih lanjut, lihat Fungsi RoaringBitmap.

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

      STRING_AGG

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

      • Sintaks 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 selanjutnya.

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

      ARRAY_AGG

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

      • Sintaks 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 selanjutnya.

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

      ANY_VALUE

      Dalam kueri agregasi yang berisi GROUP BY, fungsi ini mengembalikan hasil acak dari suatu baris dalam setiap kelompok agregasi. Hasilnya bersifat non-deterministik.

      ANY_VALUE(expr)

      Parameter input untuk ANY_VALUE hanya mendukung tipe 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;

      Didukung di V3.1.5 dan versi selanjutnya.

    • Mulai dari V3.1, Anda dapat mengatur Tabel Dinamis sebagai partisi logis. Properti partisi dan pengaturan manajemen partisi yang terkait dengan partisi logis didukung.

Pembaruan penuh

Jika Tabel Dinamis diatur ke mode pembaruan penuh, fitur berikut didukung dengan batasan tertentu:

Fitur yang didukung

  • Dukungan tabel dasar: Dukungan untuk tabel dasar sama seperti untuk tabel Hologres biasa. Tabel internal Hologres dan tabel eksternal, seperti MaxCompute, DLF, dan Paimon, didukung sebagai tabel dasar untuk Tabel Dinamis. Anda harus memiliki izin akses ke tabel dasar untuk membuat Tabel Dinamis. Untuk informasi selengkapnya, lihat Izin Tabel Dinamis.

  • Dukungan kueri: Mode pembaruan penuh mendukung semua fungsi, ekspresi SQL, dan tipe data yang didukung oleh Hologres.

  • Dukungan sumber daya pembaruan: Secara default, sumber daya arsitektur tanpa server digunakan untuk menjalankan tugas pembaruan. Anda juga dapat beralih ke sumber daya instans saat ini.

Batasan

Anda tidak dapat mengonversi Tabel Dinamis dari mode pembaruan penuh ke mode pembaruan bertahap.

Batasan umum

Batasan Tabel Dinamis

  • Instans Hologres harus V3.0 atau versi selanjutnya.

  • Batasan properti Tabel Dinamis: Anda tidak dapat mengatur kunci primer atau nilai bidang default. Mesin secara otomatis melakukan inferensi indeks tabel. Anda juga dapat mengatur indeks secara manual jika diperlukan.

  • Hanya mode pembaruan penuh dan pembaruan bertahap yang didukung. Cakupan dan batasan berbeda antara kedua mode tersebut. Untuk informasi selengkapnya, lihat Pembaruan penuh dan Pembaruan bertahap.

Batasan pada operasi DDL, DML, dan lainnya pada Tabel Dinamis

Operasi

Dukungan

CREATE DYNAMIC TABLE

Ya

RENAME DYNAMIC TABLE

Ya

RENAME DYNAMIC TABLE Column

Ya

SELECT

Ya

Refresh

  • Didukung untuk tabel non-partisi dan partisi anak.

  • Tidak didukung untuk tabel partisi induk.

DROP DYNAMIC TABLE

Ya

DROP DYNAMIC TABLE Column

Tidak

TRUNCATE DYNAMIC TABLE

Tidak

DML (INSERT/UPDATE/DELETE) pada TABEL DINAMIS

Tidak

ADD Column

Tidak

Resharding

Tidak

Catatan

Resharding pada tabel dasar tidak didukung.

CREATE TABLE AS/LIKE

Tidak

Persyaratan izin untuk menggunakan Tabel Dinamis

Operasi

Persyaratan izin

CREATE DYNAMIC TABLE

  • Izin Buat Tabel.

  • Izin Pilih pada tabel dasar.

ALTER DYNAMIC TABLE

  • Izin Buat Tabel.

  • Izin Pilih pada tabel dasar.

DROP DYNAMIC TABLE

Pemilik tabel Tabel Dinamis.

SELECT DYNAMIC TABLE

Izin Pilih pada Tabel Dinamis.

REFRESH DYNAMIC TABLE

Izin DML pada Tabel Dinamis.

Catatan

Memperbarui tabel partisi induk tidak didukung.

Untuk informasi lebih lanjut tentang cara memberikan izin pada Tabel Dinamis, lihat Model Izin Hologres.

Efek operasi tabel dasar pada Tabel Dinamis

Operasi tabel dasar

Perilaku Tabel Dinamis

RENAME <basetable_name>

  • Kueri pada Tabel Dinamis dijalankan secara normal.

  • Operasi refresh gagal.

RENAME <nama kolom tabel dasar yang tidak digunakan oleh Tabel Dinamis>

  • Kueri pada Tabel Dinamis dijalankan secara normal.

  • Operasi pembaruan dijalankan secara normal.

Ganti nama kolom di tabel dasar yang digunakan oleh Tabel Dinamis

  • Kueri pada Tabel Dinamis dijalankan secara normal.

  • Operasi pembaruan dijalankan secara normal.

DROP <basetable_name>

  • Operasi DROP gagal.

  • Tabel Dinamis tetap berjalan secara normal.

DROP <basetable_name> CASCADE

Tabel Dinamis juga dihapus, dan tugas dibatalkan.

Hapus kolom di tabel dasar yang tidak digunakan oleh Tabel Dinamis

  • Kueri pada Tabel Dinamis dijalankan secara normal.

  • Operasi pembaruan dijalankan secara normal.

Hapus kolom di tabel dasar yang digunakan oleh Tabel Dinamis

Operasi DROP gagal.

TRUNCATE <basetable_name>

  • Jika Anda memotong tabel dasar sebelum Tabel Dinamis melakukan pembaruan, kueri pada Tabel Dinamis mengembalikan data.

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

INSERT, DELETE, UPDATE, atau UPSERT <basetable_name>

Data dimasukkan ke, dihapus dari, diperbarui di, atau di-upsert ke Tabel Dinamis sesuai dengan itu.