Agregat Kontinu
Lakukan agregasi awal pada data deret waktu dengan VIEW materialisasi CONTINUOUS AGGREGATE dan penyegaran inkremental
Agregat Kontinu adalah pelajaran SQL Academy gratis di CoddyKit. Ini adalah pelajaran 2 dari 4. Kamu bisa membaca pelajaran lengkapnya di bawah secara gratis — lalu praktikkan langsung di browser dengan editor kode bawaan dan tutor AI 24/7. Ini adalah bagian dari jalur belajar SQL Academy, dan progresmu tersinkronisasi di web dan aplikasi CoddyKit. Kursus SQL Academy mencakup 4 pelajaran total.
Apa Itu Agregat Berkelanjutan?
Agregat yang telah dihitung sebelumnya dan diperbarui secara bertahap pada hypertabel — seperti tampilan terwujud yang diperbarui secara cerdas saat data baru tiba.
Membuatnya
Rata-rata perangkat per jam:
CREATE MATERIALIZED VIEW metrics_hourly
WITH (timescaledb.continuous) AS
SELECT device_id,
time_bucket('1 hour', ts) AS hour,
AVG(value) AS avg_value,
COUNT(*) AS samples
FROM metrics
GROUP BY device_id, hour;Kebijakan REFRESH
TimescaleDB memperbarui secara otomatis:
SELECT add_continuous_aggregate_policy('metrics_hourly',
start_offset => INTERVAL '1 day',
end_offset => INTERVAL '1 hour',
schedule_interval => INTERVAL '15 minutes');
-- Every 15 minutes, refresh the window from 1 day ago to 1 hour ago.Membuat Kueri
Cukup gunakan SELECT — TimescaleDB menggabungkan data yang terwujud dengan data mentah untuk periode terbaru yang belum diwujudkan:
SELECT * FROM metrics_hourly
WHERE device_id = 42
AND hour >= NOW() - INTERVAL '7 days'
ORDER BY hour;Agregasi Waktu Nyata
Secara bawaan, agregat berkelanjutan menampilkan data yang telah dihitung sebelumnya PLUS data mentah untuk bagian akhir yang belum diwujudkan. Anda selalu melihat nilai terbaru, dengan konsekuensi bagian akhir harus dihitung saat itu juga.
Mode Hanya Terwujud
Untuk dasbor yang sepenuhnya telah dihitung sebelumnya (tanpa perhitungan saat itu juga), nonaktifkan agregasi waktu nyata:
ALTER MATERIALIZED VIEW metrics_hourly
SET (timescaledb.materialized_only = true);Agregasi Bertingkat
Bangun per jam → per hari → per bulan:
-- daily aggregate from the hourly cagg
CREATE MATERIALIZED VIEW metrics_daily
WITH (timescaledb.continuous) AS
SELECT device_id, time_bucket('1 day', hour) AS day,
AVG(avg_value) AS avg_value
FROM metrics_hourly
GROUP BY device_id, day;Mengompresi Hypertabel Tidak Menghambat Agregasi
Anda dapat mengompresi hypertabel yang mendasarinya; agregat berkelanjutan tetap berfungsi.
Saat Agregat Berkelanjutan Mengungguli Tampilan Terwujud
- Data deret waktu: semantik waktu bawaan
- REFRESH bertahap — tidak pernah memindai ulang seluruh riwayat
- Integrasi bagian akhir waktu nyata
- Penggulungan bertingkat
Kompatibilitas
Agregat berkelanjutan berfungsi pada hypertabel TimescaleDB. Untuk Postgres non-TS, Anda harus membuat sendiri tampilan terwujud dan logika REFRESH.
Pengisian Data Historis
Perbarui data historis secara manual jika Anda mengubah definisi agregat:
CALL refresh_continuous_aggregate('metrics_hourly',
NULL, NOW());
-- Recompute from the beginning of time.Ringkasan
Agregat berkelanjutan adalah tampilan terwujud deret waktu.
- Didefinisikan dengan WITH (timescaledb.continuous)
- Kebijakan REFRESH otomatis
- Perpaduan waktu nyata dan data terwujud
- Susun agregasi harian/mingguan di atas agregasi per jam
Pemeriksaan Singkat
Apa yang membuat REFRESH agregat berkelanjutan TimescaleDB lebih efisien dibandingkan REFRESH MATERIALIZED VIEW?
Pertanyaan yang Sering Diajukan
Apakah pelajaran “Agregat Kontinu” gratis?
Ya — teks lengkap “Agregat Kontinu” gratis dibaca di sini di web. Untuk praktiknya secara interaktif (editor kode bawaan dan tutor AI 24/7) dan buka sisa kursus SQL Academy, upgrade ke CoddyKit PRO. Kursus SQL Academy mencakup 4 pelajaran total.
Apa yang akan aku pelajari di “Agregat Kontinu”?
Lakukan agregasi awal pada data deret waktu dengan VIEW materialisasi CONTINUOUS AGGREGATE dan penyegaran inkremental Kamu berlatih SQL Academy dengan kode praktik yang langsung kamu jalankan di browser, dan tutor AI 24/7 menjawab pertanyaanmu saat kamu mengerjakan pelajaran ini.
Apakah aku perlu pengalaman untuk memulai SQL Academy?
Tidak diperlukan pengalaman sebelumnya. SQL Academy di CoddyKit dirancang untuk pemula hingga pelajar tingkat lanjut, jadi kamu bisa memulai di sini atau dari awal dan belajar sesuai kecepatan kamu sendiri. Ini adalah pelajaran 2 dari 4.
Berapa lama pelajaran “Agregat Kontinu” memakan waktu?
Sebagian besar pelajaran CoddyKit memakan waktu sekitar 5–10 menit. Setiap pelajaran ringkas dan interaktif, jadi kamu membuat kemajuan stabil dan melanjutkan dari tempat kamu tinggalkan di web dan aplikasi.
Bisakah aku menulis dan menjalankan kode dalam pelajaran SQL Academy ini?
Ya. Setiap pelajaran SQL Academy menyertakan editor kode bawaan, jadi kamu menulis dan menjalankan kode nyata langsung di browser dan mendapatkan umpan balik AI instan — tidak diperlukan penyiapan lokal.