継続的集約
CONTINUOUS AGGREGATEのマテリアライズドビューで時系列データを事前集計し、差分更新を行います。
「継続的集約」はCoddyKit上の無料SQL Academyレッスンです。 これはレッスン2/4です。 下記で完全なレッスンを無料で読むことができます。その後、ブラウザ内の組み込みコードエディタと24時間対応のAIチューターでハンズオン演習できます。 これはSQL Academy学習パスの一部であり、ウェブとCoddyKitアプリ全体で進捗が同期されます。 SQL Academyコースには全4レッスンが含まれています。
継続的集計とは
ハイパーテーブルに対して事前計算され、増分更新される集計です。新しいデータが到着すると効率的に更新されるマテリアライズドビューのようなものです。
作成
デバイスごとの 1 時間単位の平均:
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;更新ポリシー
TimescaleDB が自動的に更新します。
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.クエリ
SELECT を実行するだけで、TimescaleDB がマテリアライズドデータと、直近の未マテリアライズ期間の生データを結合します。
SELECT * FROM metrics_hourly
WHERE device_id = 42
AND hour >= NOW() - INTERVAL '7 days'
ORDER BY hour;リアルタイム集計
デフォルトでは、継続的集計は事前計算済みのデータに加えて、未マテリアライズ部分の生データも表示します。最新の値を常に確認できますが、その代わりに未マテリアライズ部分をその場で計算します。
マテリアライズドオンリーモード
その場での計算を行わない、完全に事前計算されたダッシュボードにするには、リアルタイム集計を無効にします。
ALTER MATERIALIZED VIEW metrics_hourly
SET (timescaledb.materialized_only = true);多段階集計
1 時間単位 → 1 日単位 → 1 か月単位で構築します。
-- 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;ハイパーテーブルの圧縮は集計を妨げない
基盤となるハイパーテーブルを圧縮しても、継続的集計は機能し続けます。
継続的集計がマテリアライズドビューに勝る場合
- 時系列データ:組み込みの時間処理
- 増分更新 — 履歴全体を再スキャンしません
- リアルタイム部分との統合
- 多段階のロールアップ
互換性
継続的集計は TimescaleDB のハイパーテーブルで動作します。TS ではない Postgres では、マテリアライズドビューと更新ロジックを自分で実装する必要があります。
バックフィル
集計の定義を変更した場合は、過去のデータを手動で更新します。
CALL refresh_continuous_aggregate('metrics_hourly',
NULL, NOW());
-- Recompute from the beginning of time.まとめ
継続的集計は時系列データ用のマテリアライズドビューです。
- WITH (timescaledb.continuous) で定義します
- 自動更新ポリシー
- リアルタイムデータとマテリアライズドデータの組み合わせ
- 1 時間単位の集計の上に、日単位・週単位の集計を重ねます
クイックチェック
REFRESH MATERIALIZED VIEW と比較して、TimescaleDB の継続的集計の更新が効率的なのはなぜですか?
よくある質問
「継続的集約」レッスンは無料ですか?
はい。「継続的集約」の完全なテキストはこのウェブで無料で読めます。インタラクティブに演習し(組み込みコードエディタと24時間対応のAIチューター)、SQL Academyコースの残りをアンロックするには、CoddyKit PROにアップグレードしてください。 SQL Academyコースには全4レッスンが含まれています。
「継続的集約」で何を学びますか?
CONTINUOUS AGGREGATEのマテリアライズドビューで時系列データを事前集計し、差分更新を行います。 ブラウザで直接実行するハンズオンコードでSQL Academyを演習し、24時間対応のAIチューターがレッスンを進める中での質問に答えます。
SQL Academyを始めるのに経験は必要ですか?
事前経験は必要ありません。CoddyKitのSQL Academyは初級者から上級者向けに構成されているため、ここから始めるか最初から始めて、自分のペースで進むことができます。 これはレッスン2/4です。
「継続的集約」レッスンにはどのくらい時間がかかりますか?
ほとんどのCoddyKitレッスンは約5~10分かかります。各レッスンはコンパクトでインタラクティブなので、着実に進歩し、ウェブとアプリ全体で正確に前回の場所から再開できます。
このSQL Academyレッスンでコードを書いて実行できますか?
はい。すべてのSQL Academyレッスンに組み込みコードエディタが含まれているため、ブラウザでリアルコードを書いて実行し、即座のAIフィードバックを取得できます。ローカル設定は不要です。