Kontinuerliga aggregat
Föraggregera tidsseriedata med materialiserade vyer av typen CONTINUOUS AGGREGATE och inkrementell uppdatering.
Kontinuerliga aggregat är en gratis lektion i SQL Academy på CoddyKit. Detta är lektion 2 av 4. Ni kan läsa hela lektionen gratis nedan och sedan öva praktiskt i webbläsaren med en inbyggd kodredigerare och en AI-handledare som är tillgänglig dygnet runt. Den ingår i lärvägen för SQL Academy, och Era framsteg synkroniseras mellan webben och CoddyKit-appen. Kursen i SQL Academy innehåller totalt 4 lektioner.
Vad är ett kontinuerligt aggregat?
Ett förberäknat, inkrementellt uppdaterat aggregat över en hypertable — ungefär som en materialiserad vy som uppdateras intelligent när nya data anländer.
Skapa ett
Genomsnitt per enhet och timme:
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;Uppdateringspolicy
TimescaleDB uppdaterar automatiskt:
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.Fråga data
Använd bara SELECT — TimescaleDB sammanfogar materialiserade data med rådata för den senaste ännu inte materialiserade perioden:
SELECT * FROM metrics_hourly
WHERE device_id = 42
AND hour >= NOW() - INTERVAL '7 days'
ORDER BY hour;Realtidsaggregat
Som standard visar kontinuerliga aggregat förberäknade data PLUS rådata för den ännu inte materialiserade delen. Du ser alltid de senaste värdena, men den delen beräknas då i realtid.
Läge med endast materialiserade data
För fullständigt förberäknade dashboards, utan beräkningar i realtid, stänger du av realtidsaggregat:
ALTER MATERIALIZED VIEW metrics_hourly
SET (timescaledb.materialized_only = true);Aggregering i flera nivåer
Bygg timvis → dagligen → månadsvis:
-- 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;Komprimering av hypertables blockerar inte aggregat
Du kan komprimera den underliggande hypertabellen; kontinuerliga aggregat fortsätter att fungera.
När kontinuerliga aggregat är bättre än materialiserade vyer
- Tidsseriedata: inbyggd tidssemantik
- Inkrementell uppdatering — hela historiken behöver aldrig läsas om
- Integration av realtidsdelen
- Rollup i flera nivåer
Kompatibilitet
Kontinuerliga aggregat fungerar på TimescaleDB-hypertables. För Postgres utan TS måste du själv bygga en materialiserad vy och logik för uppdatering.
Efterinläsning
Uppdatera historiska data manuellt om du ändrar aggregatdefinitionen:
CALL refresh_continuous_aggregate('metrics_hourly',
NULL, NOW());
-- Recompute from the beginning of time.Sammanfattning
Kontinuerliga aggregat är materialiserade vyer för tidsseriedata.
- Definieras med WITH (timescaledb.continuous)
- Automatisk uppdateringspolicy
- En blandning av realtidsdata och materialiserade data
- Bygg dagliga eller veckovisa aggregat ovanpå timvisa
Snabbtest
Vad gör att ett kontinuerligt TimescaleDB-aggregat kan uppdateras effektivare än med REFRESH MATERIALIZED VIEW?
Lär dig SQL med en AI-lärare – gratis
Skriv och kör riktig kod i webbläsaren, få omedelbar hjälp av en AI-lärare dygnet runt och fortsätt där du slutade – på webben eller i appen.
- Kurser
- 46
- Lektioner
- 183
Vanliga frågor
Är lektionen ”Kontinuerliga aggregat” gratis?
Ja – hela texten till ”Kontinuerliga aggregat” kan läsas gratis här på webben. Om Ni vill öva interaktivt med en inbyggd kodredigerare och en AI-handledare som är tillgänglig dygnet runt och låsa upp resten av kursen i SQL Academy, kan Ni uppgradera till CoddyKit PRO. Kursen i SQL Academy innehåller totalt 4 lektioner.
Vad lär jag mig i ”Kontinuerliga aggregat”?
Föraggregera tidsseriedata med materialiserade vyer av typen CONTINUOUS AGGREGATE och inkrementell uppdatering. Ni övar på SQL Academy med praktisk kod som körs direkt i webbläsaren, medan en AI-handledare som är tillgänglig dygnet runt svarar på Era frågor under lektionen.
Behöver jag någon erfarenhet för att börja lära mig SQL Academy?
Du behöver inga förkunskaper. Utbildningen i SQL Academy på CoddyKit är upplagd för allt från nybörjare till avancerade elever, så att du kan börja här eller från början och gå fram i din egen takt. Detta är lektion 2 av 4.
Hur lång tid tar lektionen ”Kontinuerliga aggregat”?
De flesta CoddyKit-lektioner tar cirka 5–10 minuter. Varje lektion är kort och interaktiv, så att du gör stadiga framsteg och kan fortsätta precis där du slutade – på webben eller i appen.
Kan jag skriva och köra kod i den här SQL Academy-lektionen?
Ja. Varje SQL Academy-lektion innehåller en inbyggd kodredigerare, så att du kan skriva och köra riktig kod direkt i webbläsaren och få omedelbar AI-feedback – utan lokal installation.
Alla lektioner i den här kursen
- TimescaleDB-hypertabeller
- Kontinuerliga aggregat
- Komprimerings- och retentionprinciper
- Val av index för tidsserier