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.CatatanSemantik 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>)CatatanParameter 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)CatatanTipe 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)CatatanTipe 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_VALUEhanya 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 |
|
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 |
|
ALTER DYNAMIC TABLE |
|
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> |
|
RENAME <nama kolom tabel dasar yang tidak digunakan oleh Tabel Dinamis> |
|
Ganti nama kolom di tabel dasar yang digunakan oleh Tabel Dinamis |
|
DROP <basetable_name> |
|
DROP <basetable_name> CASCADE | Tabel Dinamis juga dihapus, dan tugas dibatalkan. |
Hapus kolom di tabel dasar yang tidak digunakan oleh Tabel Dinamis |
|
Hapus kolom di tabel dasar yang digunakan oleh Tabel Dinamis | Operasi DROP gagal. |
TRUNCATE <basetable_name> |
|
INSERT, DELETE, UPDATE, atau UPSERT <basetable_name> | Data dimasukkan ke, dihapus dari, diperbarui di, atau di-upsert ke Tabel Dinamis sesuai dengan itu. |