Agrégats continus
Précalculez les agrégats de données de séries temporelles avec des vues matérialisées CONTINUOUS AGGREGATE et une actualisation incrémentielle.
Agrégats continus est une leçon SQL Academy gratuite sur CoddyKit. Ceci est la leçon 2 sur 4. Tu peux lire la leçon complète ci-dessous gratuitement — puis la pratiquer en direct dans le navigateur avec un éditeur de code intégré et un tuteur IA 24/7. Elle fait partie du parcours d'apprentissage SQL Academy, et ta progression se synchronise sur le web et l'application CoddyKit. Le cours SQL Academy comprend 4 leçons au total.
Qu'est-ce qu'un agrégat continu ?
Un agrégat précalculé et actualisé progressivement sur une table hyperpartitionnée — comme une vue matérialisée qui se met à jour intelligemment à l'arrivée de nouvelles données.
En créer un
Moyennes horaires par appareil :
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;Politique d'actualisation
TimescaleDB actualise automatiquement les données :
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.Interroger
Utilisez simplement SELECT — TimescaleDB fusionne les données matérialisées avec les données brutes pour la période récente qui n'est pas encore matérialisée :
SELECT * FROM metrics_hourly
WHERE device_id = 42
AND hour >= NOW() - INTERVAL '7 days'
ORDER BY hour;Agrégation en temps réel
Par défaut, les agrégats continus affichent les données précalculées PLUS les données brutes de la partie finale non matérialisée. Vous voyez toujours les valeurs les plus récentes, au prix du calcul de cette partie finale à la volée.
Mode avec données matérialisées uniquement
Pour des tableaux de bord entièrement précalculés, sans calcul à la volée, désactivez l'agrégation en temps réel :
ALTER MATERIALIZED VIEW metrics_hourly
SET (timescaledb.materialized_only = true);Agrégation à plusieurs niveaux
Construisez les niveaux horaire → quotidien → mensuel :
-- 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 compression de la table hyperpartitionnée ne bloque pas l'agrégation
Vous pouvez compresser la table hyperpartitionnée sous-jacente : les agrégats continus continuent de fonctionner.
Quand les agrégats continus sont préférables aux vues matérialisées
- Données de séries temporelles : sémantique temporelle intégrée
- Actualisation progressive — ne reparcourt jamais tout l'historique
- Intégration de la partie finale en temps réel
- Agrégations sur plusieurs niveaux
Compatibilité
Les agrégats continus fonctionnent sur les tables hyperpartitionnées TimescaleDB. Pour un PostgreSQL qui n'utilise pas TimescaleDB, vous devez créer vous-même une vue matérialisée et sa logique d'actualisation.
Remplissage rétroactif
Actualisez manuellement les données historiques si vous modifiez la définition de l'agrégat :
CALL refresh_continuous_aggregate('metrics_hourly',
NULL, NOW());
-- Recompute from the beginning of time.Récapitulatif
Les agrégats continus sont des vues matérialisées pour les séries temporelles.
- Définis avec WITH (timescaledb.continuous)
- Politique d'actualisation automatique
- Combinaison des données en temps réel et matérialisées
- Empilez des agrégations quotidiennes et hebdomadaires au-dessus des agrégations horaires
Vérification rapide
Pourquoi l'actualisation d'un agrégat continu TimescaleDB est-elle plus efficace que REFRESH MATERIALIZED VIEW ?
Questions Fréquemment Posées
La leçon « Agrégats continus » est-elle gratuite ?
Oui — le texte complet de « Agrégats continus » est gratuit à lire ici sur le web. Pour la pratiquer de manière interactive (un éditeur de code intégré et un tuteur IA 24/7) et déverrouiller le reste du cours SQL Academy, passe à CoddyKit PRO. Le cours SQL Academy comprend 4 leçons au total.
Qu'est-ce que j'apprendrai dans « Agrégats continus » ?
Précalculez les agrégats de données de séries temporelles avec des vues matérialisées CONTINUOUS AGGREGATE et une actualisation incrémentielle. Tu pratiques SQL Academy avec du code pratique que tu exécutes directement dans le navigateur, et un tuteur IA 24/7 répond à tes questions au fur et à mesure que tu avances dans la leçon.
Dois-je avoir de l'expérience pour commencer SQL Academy ?
Aucune expérience préalable n'est requise. SQL Academy sur CoddyKit est structuré pour les débutants jusqu'aux apprenants avancés, donc tu peux commencer ici ou depuis le début et avancer à ton rythme. Ceci est la leçon 2 sur 4.
Combien de temps prend la leçon « Agrégats continus » ?
La plupart des leçons CoddyKit prennent environ 5–10 minutes. Chacune est courte et interactive, tu progresses régulièrement et tu repiques exactement où tu t'es arrêté sur le web et l'app.
Peux-tu écrire et exécuter du code dans cette leçon SQL Academy ?
Oui. Chaque leçon SQL Academy inclut un éditeur de code intégré, tu écris et exécutes du vrai code directement dans ton navigateur et tu reçois des retours IA instantanés — aucune configuration locale requise.
Toutes les leçons de ce cours
- Tables hypertables TimescaleDB
- Agrégats continus
- Politiques de compression et de rétention
- Choisir les index pour les séries temporelles