時系列分析関数
ClickHouseでの時系列分析は、標準のSQL集約およびウィンドウ関数を使用して行うことができます。 時系列データを扱う際には、通常、3つの主要な種類のメトリックに遭遇します:
- 時間とともに単調に増加するカウンターメトリック(ページビューや合計イベントのようなもの)
- 時点の測定値を表すゲージメトリック(CPU使用率や温度のような上がったり下がったりするもの)
- 観測値をサンプリングし、バケツ内でカウントするヒストグラム(リクエストの所要時間や応答サイズのようなもの)
これらのメトリックに対する一般的な分析パターンには、期間間の値の比較、累積合計の計算、変化率の算出、分布の分析が含まれます。
これらは、集約、sum() OVER
のようなウィンドウ関数、およびhistogram()
のような専門的な関数の組み合わせを通じて実現できます。
期間間の変化
時系列データを分析する際には、時間の経過に伴う値の変化を理解する必要があります。
これは、ゲージメトリックとカウンターメトリックの両方にとって不可欠です。
lagInFrame
ウィンドウ関数を使用することで、前の期間の値にアクセスし、これらの変化を計算できます。
以下のクエリは、「Weird Al」 Yankovicのウィキペディアページのビュー数の日次変化を計算することでこれを示しています。 トレンド列は、前の日と比較してトラフィックが増加した(正の値)か減少した(負の値)かを示し、活動の異常な高まりや低下を特定するのに役立ちます。
累積値
カウンターメトリックは自然に時間とともに蓄積されます。 この累積成長を分析するために、ウィンドウ関数を使用して累積合計を計算できます。
以下のクエリは、sum() OVER
句を使用して累積合計を作成し、bar()
関数で成長の視覚的な表現を提供することでこれを示しています。
レート計算
時系列データを分析する際には、時間単位あたりのイベントのレートを理解することがしばしば役立ちます。 このクエリは、時間当たりの合計を1時間(3600秒)で割ることによって、秒間のページビューのレートを計算します。 視覚的なバーは、活動のピーク時間を特定するのに役立ちます。
ヒストグラム
時系列データの人気のある使用例は、追跡されたイベントに基づいてヒストグラムを作成することです。
例えば、合計ヒット数に基づいていくつかのページの分布を理解したいとします。10,000ヒットを超えるページのみを含めます。
histogram()
関数を使用して、ビンの数に基づいて自動的に適応ヒストグラムを生成できます。
次に、arrayJoin()
を使用してデータを整形し、bar()
で視覚化します: