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.CatatanLookup 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>)CatatanParameter
columnmendukung tipe dataINT32danINT64. 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_exprharus bertipeTEXT,CHAR, atauVARCHAR.const_exprharus berupa konstantaTEXT. -
Klausa
ORDER BYtidak 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
exprmendukungBOOL, semua tipe numerik,TEXT, danBYTEA. -
Klausa
ORDER BYtidak 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_VALUEhanya menerima tipe dataINTdanBINARY.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 |
|
|
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 |
|
|
ALTER DYNAMIC TABLE |
|
|
DROP DYNAMIC TABLE |
Anda harus menjadi Pemilik Tabel Dinamis tersebut. |
|
SELECT DYNAMIC TABLE |
Izin |
|
REFRESH DYNAMIC TABLE |
Izin 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> |
|
|
RENAME <column not used by the Dynamic Table> |
|
|
RENAME <column used by the Dynamic Table> |
|
|
DROP <basetable_name> |
|
|
DROP <basetable_name> CASCADE |
Tabel Dinamis juga di-drop, dan tugas refresh-nya dibatalkan. |
|
DROP <column not used by the Dynamic Table> |
|
|
DROP <column used by the Dynamic Table> |
Operasi |
|
TRUNCATE <basetable_name> |
|
|
INSERT/DELETE/UPDATE/UPSERT <basetable_name> |
Perubahan muncul di Tabel Dinamis setelah refresh berikutnya. |