標準的なウィンドウ関数
ClickHouse固有のウィンドウ関数
以下のClickHouse固有のウィンドウ関数も利用できます。nonNegativeDerivative(metric_column, timestamp_column[, INTERVAL X UNITS])
timestamp_column に基づいて、指定された metric_column の非負の導関数を求めます。
INTERVAL は省略可能で、デフォルトは INTERVAL 1 SECOND です。
各行の計算値は次のとおりです。
- 1行目は
0 - 行目は
構文
PARTITION BY- 結果セットをどのようにグループに分けるかを定義します。ORDER BY- aggregate_function の計算時に、グループ内の行をどのような順序で並べるかを定義します。ROWS or RANGE- フレームの境界を定義し、aggregate_function はそのフレーム内で計算されます。WINDOW- 複数の式で同じウィンドウ定義を使えるようにします。
関数
row_number()- 現在の行に、パーティション内で 1 から始まる番号を付けます。first_value(x)- 順序付けされたフレーム内で評価された最初の値を返します。last_value(x)- 順序付けされたフレーム内で評価された最後の値を返します。nth_value(x, offset)- 順序付けされたフレーム内の n 番目の行 (offset) に対して評価された、最初の非 NULL 値を返します。rank()- 現在の行に、パーティション内で飛び番ありの順位を付けます。dense_rank()- 現在の行に、パーティション内で飛び番なしの順位を付けます。lagInFrame(x)- 順序付けされたフレーム内で、現在の行より前の指定された物理オフセットにある行で評価された値を返します。leadInFrame(x)- 順序付けされたフレーム内で、現在の行の後ろに offset 行だけ離れた行で評価された値を返します。
例
行番号の付与
集計関数
カラムによるパーティション化
フレーム境界の指定
実践的な例
部門ごとの最高給与/給与総額
累積和
移動平均 / スライディング平均 (3行単位)
移動平均/スライディング平均 (10秒ごと)
移動平均 / スライディング平均 (10日単位)
Range と ORDER BY toDate(ts) を使うことで、サイズが 10 単位のフレームを作成します。toDate(ts) を使っているため、その単位は日です。