メインコンテンツへスキップ
ClickHouseでの時系列分析は、標準的なSQLの集計関数とウィンドウ関数を使って実行できます。 時系列データを扱う際には、通常、主に次の3種類のメトリクスが登場します。
  • 時間の経過とともに単調に増加するカウンターメトリクス (ページビューやイベント総数など)
  • ある時点での測定値を表し、増減するGaugeメトリクス (CPU使用率や温度など)
  • 観測値をサンプリングし、バケットごとに件数を数えるヒストグラム (リクエスト時間やレスポンスサイズなど)
これらのメトリクスでよく使われる分析パターンには、期間どうしでの値の比較、累積合計の計算、変化率の算出、分布の分析などがあります。 これらはすべて、集計、sum() OVER のようなウィンドウ関数、そして histogram() のような専用関数を組み合わせることで実現できます。

前期間比の変化

時系列データを分析する際には、期間ごとに値がどのように変化したかを把握する必要がよくあります。 これは、Gauge とカウンターメトリクスのどちらにとっても重要です。 lagInFrame ウィンドウ関数を使うと、前の期間の値を参照して、こうした変化を計算できます。 次のクエリは、“Weird Al” Yankovic の Wikipedia ページの閲覧数について、前日比の変化を計算する例です。 trend カラムには、前日と比べてトラフィックが増加したか (正の値) 、減少したか (負の値) が示され、通常とは異なる急増や急減を特定するのに役立ちます。

累積値

カウンターメトリクスは、時間の経過とともに自然に増加していきます。 この累積的な増加を分析するには、ウィンドウ関数 を使って累積合計を計算できます。 次のクエリでは、累積合計を作成する sum() OVER clause を使用して、これを示しています。bar() function は、この増加を視覚的に表します。

レート計算

時系列データを分析する際は、単位時間あたりのイベント数を把握すると便利です。 このクエリは、1時間ごとの合計を1時間の秒数 (3600) で割ることで、1秒あたりのページビュー数を計算します。 棒グラフを見ることで、アクティビティが集中する時間帯を特定できます。

ヒストグラム

時系列データの代表的な用途の 1 つは、追跡対象のイベントに基づいてヒストグラムを作成することです。 たとえば、総 hits が 10,000 を超えるページのみを対象に、総 hits に応じたページ数の分布を把握したいとします。 この場合、histogram() 関数を使うと、ビンの数に基づいて適応的なヒストグラムを自動的に生成できます。
次に、arrayJoin() を使ってデータを整形し、bar() で可視化できます。
最終更新日 2026年6月29日