SQL Academy · Lektion

Kontinuerliga aggregat

Föraggregera tidsseriedata med materialiserade vyer av typen CONTINUOUS AGGREGATE och inkrementell uppdatering.

Lektion 2 av 413 steg

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?

Gratis att börja

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

  1. TimescaleDB-hypertabeller
  2. Kontinuerliga aggregat
  3. Komprimerings- och retentionprinciper
  4. Val av index för tidsserier
← Tillbaka till SQL Academy