0Pricing
SQL Academy · Lezione

Aggregati continui

Preaggreghi i dati delle serie temporali con viste materializzate CONTINUOUS AGGREGATE e aggiornamento incrementale.

Aggregati continui è una lezione SQL Academy gratuita su CoddyKit. Questa è la lezione 2 di 4. Puoi leggere la lezione completa qui gratuitamente — poi esercitati direttamente nel browser con un editor di codice integrato e un tutor IA disponibile 24/7. Fa parte del percorso di apprendimento SQL Academy, e i tuoi progressi si sincronizzano tra il web e l'app CoddyKit. Il corso SQL Academy include 4 lezioni in totale.

Che cos'è una continuous aggregate?

Un'aggregazione precalcolata e aggiornata in modo incrementale su una hypertable, simile a una vista materializzata che si aggiorna in modo intelligente all'arrivo di nuovi dati.

Creazione di una continuous aggregate

Medie orarie per dispositivo:

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;

Politica di refresh

TimescaleDB esegue automaticamente il refresh:

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.

Esecuzione di query

Esegua semplicemente una SELECT: TimescaleDB unisce i dati materializzati ai dati grezzi per il periodo più recente non materializzato:

SELECT * FROM metrics_hourly
WHERE device_id = 42
  AND hour >= NOW() - INTERVAL '7 days'
ORDER BY hour;

Aggregazione in tempo reale

Per impostazione predefinita, le continuous aggregate mostrano i dati precalcolati più i dati grezzi relativi alla coda non materializzata. In questo modo vede sempre i valori più recenti, al costo di calcolare la coda al volo.

Modalità solo materializzata

Per dashboard completamente precalcolate, senza calcolo al volo, disattivi l'aggregazione in tempo reale:

ALTER MATERIALIZED VIEW metrics_hourly
  SET (timescaledb.materialized_only = true);

Aggregazione a più livelli

Costruisca il livello orario → giornaliero → mensile:

-- 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;

La compressione della hypertable non blocca l'aggregazione

Può comprimere la hypertable sottostante: le continuous aggregate continueranno a funzionare.

Quando le continuous aggregate sono migliori delle viste materializzate

  • Dati di serie temporali: semantica temporale integrata
  • Refresh incrementale: non esegue mai una nuova scansione dell'intera cronologia
  • Integrazione della coda in tempo reale
  • Rollup a più livelli

Compatibilità

Le continuous aggregate funzionano sulle hypertable di TimescaleDB. Per PostgreSQL senza TimescaleDB, deve implementare autonomamente la vista materializzata e la relativa logica di refresh.

Riempimento retroattivo

Aggiorni manualmente i dati storici se modifica la definizione dell'aggregazione:

CALL refresh_continuous_aggregate('metrics_hourly',
  NULL, NOW());
-- Recompute from the beginning of time.

Riepilogo

Le continuous aggregate sono viste materializzate per serie temporali.

  • Definite con WITH (timescaledb.continuous)
  • Politica di refresh automatico
  • Combinazione di dati in tempo reale e materializzati
  • Costruzione di livelli giornalieri o settimanali sopra quello orario

Verifica rapida

Perché una continuous aggregate di TimescaleDB esegue il refresh in modo più efficiente rispetto a REFRESH MATERIALIZED VIEW?

Domande Frequenti

La lezione «Aggregati continui» è gratuita?

Sì — il testo completo di «Aggregati continui» è gratuito qui sul web. Per esercitarvi in modo interattivo (un editor di codice integrato e un tutor IA 24/7) e sbloccare il resto del corso SQL Academy, passa a CoddyKit PRO. Il corso SQL Academy include 4 lezioni in totale.

Cosa imparerò in «Aggregati continui»?

Preaggreghi i dati delle serie temporali con viste materializzate CONTINUOUS AGGREGATE e aggiornamento incrementale. Eserciti SQL Academy con codice pratico che esegui direttamente nel browser, e un tutor IA 24/7 risponde alle tue domande mentre lavori sulla lezione.

Ho bisogno di esperienza per iniziare SQL Academy?

Non è richiesta alcuna esperienza precedente. SQL Academy su CoddyKit è strutturato per principianti e studenti avanzati, quindi puoi iniziare da qui o dall'inizio e procedere al tuo ritmo. Questa è la lezione 2 di 4.

Quanto tempo richiede la lezione «Aggregati continui»?

La maggior parte delle lezioni CoddyKit richiede circa 5–10 minuti. Ogni lezione è breve e interattiva, quindi fai progressi costanti e riprendi esattamente da dove hai lasciato su web e app.

Posso scrivere ed eseguire codice in questa lezione SQL Academy?

Sì. Ogni lezione SQL Academy include un editor di codice integrato, quindi scrivi ed esegui codice reale direttamente nel tuo browser e ricevi feedback istantaneo dall'IA — nessuna configurazione locale necessaria.

Tutte le lezioni di questo corso

  1. Hypertable di TimescaleDB
  2. Aggregati continui
  3. Criteri di compressione e conservazione
  4. Scelta degli indici per le serie temporali
← Torna a SQL Academy