0Pricing
SQL Academy · Pelajaran

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.

Semua pelajaran dalam kursus ini

  1. Hypertable TimescaleDB
  2. Agregat Kontinu
  3. Kebijakan Kompresi dan Retensi
  4. Pilihan Indeks Deret Waktu
← Kembali ke SQL Academy