DataStore の集約関数
DataStore は、ClickHouse の強力な SQL 集約機能を活用し、集約関数およびウィンドウ関数を包括的にサポートします。
基本的な集約
組み込みメソッド
| Method | SQL 相当 | 説明 |
|---|---|---|
sum() | SUM() | 値の合計 |
mean() | AVG() | 平均値 |
count() | COUNT() | null 以外の値の数 |
min() | MIN() | 最小値 |
max() | MAX() | 最大値 |
median() | MEDIAN() | 中央値 |
std() | stddevPop() | 標準偏差 |
var() | varPop() | 分散 |
nunique() | COUNT(DISTINCT) | ユニークな値の数 |
例:
GroupBy による集約
単一集約
複数の集約処理
名前付き集約
複数の GroupBy キーの利用
統計集計
| Method | SQL Equivalent | Description |
|---|---|---|
quantile(q) | quantile(q) | q 番目の分位数 (0-1) |
skew() | skewPop() | 歪度 |
kurt() | kurtPop() | 尖度 |
corr() | corr() | 相関 |
cov() | covar() | 共分散 |
sem() | - | 平均の標準誤差 |
例:
条件付き集約
ClickHouse 固有の条件付き集約関数です。
| Function | ClickHouse | Description |
|---|---|---|
sum_if(cond) | sumIf() | 条件を満たす行の合計値 |
count_if(cond) | countIf() | 条件を満たす行の件数 |
avg_if(cond) | avgIf() | 条件を満たす行の平均値 |
min_if(cond) | minIf() | 条件を満たす行の最小値 |
max_if(cond) | maxIf() | 条件を満たす行の最大値 |
例:
コレクション集約関数
値を集約する ClickHouse 固有の関数。
| Function | ClickHouse | Description |
|---|---|---|
group_array() | groupArray() | 配列として集約 |
group_uniq_array() | groupUniqArray() | 一意な値を配列として集約 |
group_concat(sep) | groupConcat() | 文字列を連結 |
top_k(n) | topK(n) | 出現頻度上位 K 個の値 |
any() | any() | いずれか 1 つの値 |
any_last() | anyLast() | 最後の値 |
first_value() | first_value() | 並び順の先頭の値 |
last_value() | last_value() | 並び順の最後の値 |
例:
ウィンドウ関数
ランキング関数
| Function | SQL | Description |
|---|---|---|
row_number() | ROW_NUMBER() | 連番の行番号 |
rank() | RANK() | 欠番を含む順位 |
dense_rank() | DENSE_RANK() | 欠番のない連続した順位 |
ntile(n) | NTILE(n) | n 個のバケットへの分割 |
percent_rank() | PERCENT_RANK() | 百分位順位 (0〜1) |
cume_dist() | CUME_DIST() | 累積分布値 |
例:
値関数
| Function | SQL | 説明 |
|---|---|---|
lag(n) | LAG(col, n) | 前の行の値 |
lead(n) | LEAD(col, n) | 次の行の値 |
first_value() | FIRST_VALUE() | ウィンドウ内の最初の値 |
last_value() | LAST_VALUE() | ウィンドウ内の最後の値 |
nth_value(n) | NTH_VALUE(col, n) | ウィンドウ内のn番目の値 |
例:
累積関数
| Method | Description |
|---|---|
cumsum() | 累積合計 |
cummax() | 累積最大値 |
cummin() | 累積最小値 |
cumprod() | 累積積 |
diff(n) | n 行前との差 |
pct_change(n) | n 行前からの変化率 |
例:
ローリングウィンドウ
F ネームスペース
F ネームスペースは、ClickHouse の関数へアクセスするための手段を提供します。
インポート
F 関数の利用
ウィンドウ関数を用いたF
一般的な集約パターン
グループごとの上位 N 件
累積合計
移動平均
前年比較
パーセンタイルランク
集約メソッドの概要
| カテゴリ | メソッド |
|---|---|
| 基本 | sum, mean, count, min, max, median |
| 統計的 | std, var, quantile, skew, kurt, corr, cov |
| 条件付き | sum_if, count_if, avg_if, min_if, max_if |
| コレクション | group_array, group_uniq_array, group_concat, top_k |
| 順位付け | row_number, rank, dense_rank, ntile, percent_rank |
| 値 | lag, lead, first_value, last_value, nth_value |
| 累積 | cumsum, cummax, cummin, cumprod, diff, pct_change |
| ローリング | rolling().mean/sum/std/..., expanding().mean/sum/... |