0Pricing
SQL Academy · レッスン

継続的集約

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フィードバックを取得できます。ローカル設定は不要です。

このコースのすべてのレッスン

  1. TimescaleDBハイパーテーブル
  2. 継続的集約
  3. 圧縮と保持ポリシー
  4. 時系列インデックスの選択
← SQL Academyに戻る