Mulai versi V3.0, Hologres mendukung refresh data manual atau otomatis untuk tabel dinamis melalui pernyataan REFRESH DYNAMIC TABLE.
Gunakan REFRESH DYNAMIC TABLE untuk memperbarui tabel dinamis dengan data terbaru sesuai permintaan, tanpa menunggu refresh otomatis berikutnya yang dijadwalkan. Fitur ini berguna untuk pembaruan satu kali atau ketika tabel memiliki interval refresh yang panjang dan Anda memerlukan data segera.
Hologres mendukung dua mode refresh:
-
Manual refresh: Jalankan
REFRESH DYNAMIC TABLEsekali. -
Automatic refresh: Dikonfigurasi melalui kebijakan refresh dalam pernyataan
CREATE DYNAMIC TABLE. Berjalan sesuai jadwal.
Sintaks
-- Didukung di semua versi
REFRESH DYNAMIC TABLE [<schema_name>.]<table_name>;
-- Didukung mulai dari V3.1
REFRESH [OVERWRITE] DYNAMIC TABLE [<schema_name>.]<table_name>
[PARTITION (<partition_key> = '<partition_value>')]
[WITH (
refresh_mode = '{full|incremental}',
cascading = {true|false}
)];
Parameter
| Parameter | Deskripsi |
|---|---|
schema_name |
Nama skema yang berisi tabel tersebut. |
table_name |
Nama tabel non-partisi atau tabel anak partisi yang akan direfresh. |
OVERWRITE |
Menghapus status saat ini sebelum menjalankan refresh. Untuk mode incremental refresh, ini menjalankan kembali incremental refresh dari awal tanpa mempertahankan status sebelumnya. Didukung mulai dari V3.1. |
PARTITION (<partition_key> = '<partition_value>') |
Menentukan partisi yang akan direfresh. partition_key adalah kunci partisi; partition_value adalah nilai partisi target. Wajib ditentukan untuk tabel partisi. Hanya satu partisi yang dapat direfresh per pernyataan. |
refresh_mode = '{full|incremental}' |
Mengganti mode refresh untuk operasi ini. Didukung mulai dari V3.1. |
cascading = {true|false} |
Menentukan apakah refresh tabel dinamis ini juga memicu refresh tabel dinamis downstream-nya. Didukung mulai dari V5.0. Nilai yang valid:
REFRESH DYNAMIC TABLE mengembalikan respons segera setelah tabel ini selesai direfresh dan tidak menunggu refresh downstream. Parameter ini hanya berlaku jika dependensi downstream dibuat dengan freshness = 'upstream'. Untuk informasi lebih lanjut, lihat Create dynamic table. |
computing_resource = '{serverless|local|<warehouse_name>}' |
Menentukan sumber daya komputasi untuk refresh. Default: serverless. Lihat Set computing resources for dynamic table refresh untuk detailnya. |
Nilai `computing_resource`:
| Nilai | Deskripsi |
|---|---|
serverless |
Menggunakan sumber daya arsitektur tanpa server (serverless). Default. |
local |
Menggunakan sumber daya instans. |
<warehouse_name> |
Menggunakan virtual warehouse yang ditentukan. Didukung mulai dari V4.0.7. Untuk refresh manual, menggunakan virtual warehouse yang sedang terhubung saat ini jika tidak ditentukan. Untuk refresh otomatis, menggunakan virtual warehouse yang terhubung saat tabel dinamis dibuat. |
Perilaku refresh berdasarkan pernyataan
Ketika tabel dinamis telah ditetapkan dalam mode refresh tertentu (incremental atau full), efek dari setiap pernyataan refresh manual bergantung pada mode saat ini dari tabel tersebut.
Kombinasi yang tidak sesuai—misalnya, meminta incremental refresh pada tabel full-refresh atau full refresh pada tabel incremental-refresh—akan menghasilkan error karena kedua mode tersebut menangani perubahan data dengan cara yang secara mendasar tidak kompatibel.
| Pernyataan | Tabel dalam Mode Pembaruan Bertahap | Tabel dalam mode full refresh |
|---|---|---|
REFRESH |
Menjalankan incremental refresh. | Menjalankan full refresh. |
REFRESH OVERWRITE |
Menjalankan kembali incremental refresh tanpa mempertahankan status sebelumnya. | Menjalankan full refresh. |
REFRESH WITH (refresh_mode = 'full') |
Menghasilkan error. | Menjalankan full refresh. |
REFRESH WITH (refresh_mode = 'incremental') |
Menjalankan incremental refresh. | Menghasilkan error. |
REFRESH OVERWRITE WITH (refresh_mode = 'incremental') |
Menjalankan kembali incremental refresh tanpa mempertahankan status sebelumnya. | Menghasilkan error. |
REFRESH OVERWRITE WITH (refresh_mode = 'full') |
Menjalankan full refresh dan menghentikan incremental refresh. | Menjalankan full refresh. |
Batasan
Tabel partisi reguler
-
Hanya sintaks dasar
REFRESH DYNAMIC TABLEyang didukung. -
Refresh tabel induk tidak didukung. Refresh setiap tabel anak secara individual.
Tabel partisi logis
-
Jika
refresh_modeditentukan dalam refresh manual, sistem akan mengubah mode refresh partisi tersebut menjadi mode yang ditentukan. Setelah itu, refresh otomatis tidak lagi dijalankan untuk partisi tersebut. -
Setelah
OVERWRITEdijalankan, status partisi dihapus dan partisi yang ditentukan direfresh secara penuh.
Umum
-
Untuk tabel partisi, Anda harus menentukan partisi. Hanya satu partisi yang dapat direfresh per pernyataan.